2014-10-18 50 views
-3

在我的网页上为管理员登录。我正在按照一个古老的教程,我正在尝试为MYSQLI更新它。在他的录像,一切都运行完美。对于然而我..至少需要X个参数 - 警告,通知

if(isset($_POST['submit'])) { 

    $username = $_POST['username']; 
    $password = md5($_POST['password']); 
    if(empty($username) or empty($password)) { 

     echo "<p class='warn'>Oops!</p>"; 

    } else { 

     $checklogin = mysqli_query(" SELECT id FROM admins WHERE username='$username' AND password='password' "); 

     if(mysqli_num_rows($checklogin) == 1){ 

      echo "You can log in."; 

     } else { 

      echo "Oops"; 

     } 
    } 
} 

Warning: mysqli_query() expects at least 2 parameters, 1 given in /opt/lampp/htdocs/WEBSITES/Site1/admin/login.php on line 29 

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /opt/lampp/htdocs/WEBSITES/Site1/admin/login.php on line 31 
+2

我会推荐使用[PDO](http://php.net/manual/en/book.pdo.php)。海事组织比MySQLi更安全,更易于使用。 – 2014-10-18 20:18:36

+0

您确定该错误不是由您的mysqli_query中缺失的$引起的吗? $缺少部分'[..] AND password ='$ password'“);' – Kommodore 2014-10-18 20:20:23

+1

不要使用带密码的MD5 PHP5有处理密码哈希的新函数 – 2014-10-18 20:20:29

回答

1

您对mysqli_query()调用需要的第一个参数是您的连接到数据库,这将在mysqli_connect()已退回。这是你的第一个警告。

因为你没提供mysqli_query()连接的$checkLogin返回值等于null,这是你第二次警告进来。mysqli_num_rows()预计从一个成功的查询结果集。

这是你的解决办法:

$connection = mysqli_connect("host", "user", "pass", "yourDB"); 
$result = mysqli_query($connection, "SELECT some, fields FROM YourTable WHERE something = 'this'"); 
+0

已建立连接,但已不要把'$ connection'放在'mysqli_query'中。它现在有效。谢谢。我会尽可能接受。 – 2014-10-18 20:28:01

+1

@Razzey很高兴它工作。请注意,许多MySQLi库函数的过程版本都需要连接,结果等。确保您查阅这些函数的手册以找出可能需要的任何参数。 – Crackertastic 2014-10-18 20:31:46

+0

Wil,谢谢!仍在学习所有这些PHP和数据库的东西。祝你有美好的一天/晚上/晚上! – 2014-10-18 20:33:30

3

有关不正确的参数错误通常可以通过查找问题的功能手动来解决。

在这种情况下,去http://php.net/mysqli_query,你会看到这个功能总结:

混合mysqli_query(mysqli的$链接,串$查询[摘要$ resultmode = MYSQLI_STORE_RESULT])

因此,预期的两个参数是表示与数据库的连接的mysqli对象(您将在第一次连接时获得),然后是要运行的SQL字符串(您当前正在传递)。

第二个错误是第一个错误的后果:因为您没有检查错误,所以$checklogin不代表成功的查询结果。


顺便说一句,有你可能想在这里看看其他一些问题,如果该教程没有去和他们解释:

相关问题