警告:mysqli_num_rows()预计在第14行上只有1个参数,2 ....

时间:2016-04-24 15:43:57

标签: php mysql connection

我在下面的脚本中遇到了主题错误:

<?php
include("db.php");
if($_SERVER["REQUEST_METHOD"] == "POST") {
    $email = mysqli_real_escape_string($link,$_POST['email']);
    $password = mysqli_real_escape_string($link,$_POST['password']);
    $gender = $_POST['gender'];
    $password = md5($password); 
    if ($gender == female) {
        $sql="SELECT id FROM female_users WHERE email='$email' AND password='$password'";
    } else {
        $sql="SELECT id FROM male_users WHERE email='$email' AND password='$password'";
    }
    $result=mysqli_query($link,$sql);
    $count=mysqli_num_rows($link,$result);

    if($count==1) {
        echo('Hello');
    } else  {
        $error="Your Email or Password is invalid";
    }
}
mysqli_close($link);
?>

我不确定它是什么......我试图消除if语句,但它没有给我任何结果。

3 个答案:

答案 0 :(得分:2)

在此处查看错误:

$count=mysqli_num_rows($link,$result);

mysqli_num_rows()函数不会将数据库连接作为参数,因此请从那里删除$link,

然后,female中的if ($gender == female)被视为常量http://php.net/manual/en/function.constant.php,而不是字符串http://php.net/manual/en/language.types.string.php

if ($gender == 'female')

并且错误报告会给你一些关于未定义的不断女性通知的事情。

现在,MD5不再被认为可以安全地存储密码。

使用以下其中一项:

其他链接:

关于列长的重要说明:

如果您决定使用password_hash()或兼容包(如果PHP <5.5)https://github.com/ircmaxell/password_compat/,请务必注意,如果您当前的密码列的长度低于60 ,它需要更改为(或更高)。手册建议长度为255。

您需要更改列的长度并重新开始使用新哈希才能使其生效。否则,MySQL将无声地失败。

答案 1 :(得分:0)

尝试

 $count=mysqli_num_rows($result);    

答案 2 :(得分:0)

将计数查询更改为:

$result=mysqli_query($link,$sql);
    $count=mysqli_num_rows($result);