期望至少X参数 - 警告,通知

时间:2014-10-18 20:15:24

标签: php mysql login mysqli

在我的网页上登录管理员。我正在关注一个有点老的教程,我正在尝试为MYSQLI更新它。在他的视频中,一切都很完美..对我而言..

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 个答案:

答案 0 :(得分:3)

有关错误参数的错误通常可以通过查找相关功能的手册来解决。

在这种情况下,请转到http://php.net/mysqli_query,您将看到此功能摘要:

  

混合mysqli_query(mysqli $ link,字符串$ query [,int $ resultmode = MYSQLI_STORE_RESULT])

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

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


顺便提一下,如果教程没有继续解释,你可能还想在这里看一些其他问题:

答案 1 :(得分: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'");