繁体   English   中英

mysqli num行问题

[英]mysqli num rows issues

这是我得到的警告:

警告:mysqli_num_rows()期望参数1为mysqli_result,在第10行的/home/snissa4/public_html/test.php中给出的布尔值

<?php
if(isset($_POST['user']))
{
    //variable declaration 
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    //connect to data base 
    $con=mysqli_connect("engr-cpanel-mysql.engr.illinois.edu","socialdrinkers_b","testing123","socialdrinkers_db");

    if (mysqli_num_rows(mysqli_query($con, "Select * from Drinkers where userID = '$user' AND password = '$pass'")))
    { // correct info
        $result = mysqli_query("SELECT * FROM Drinkers where userID = '$user' AND password = '$pass'");
        while($row = mysqli_fetch_array($result));
        {//cookie implementation
            $expire = time() + 60*60*24; //1 day
            setcookie('idNum', $row['idNum'], $expire); 
            echo "Logged in as <b>".$row['userID']."</b>";
        }
    } 
    else 
    { // wrong info 
        echo "<b>wrong id or pass</b>"; 
    }
}


echo "<form method = 'post'> 
Username: <input type = 'text' name = 'user'>
Password: <input type = 'password' name = 'pass'>
<input type = 'submit' value = 'LOG IN'> 
</form>";

 ?>

我不确定为什么会收到此警告,当我尝试使用在数据库中输入的用户名和密码登录时,它只会一直将我重定向到此页面,而不是显示成功消息。 我不知道为什么。

谢谢您的帮助,在我的CS411(数据库)类中苦苦挣扎

mysqli_query()返回false。 试试echo mysqli_error($con); -这将告诉您mysqli_query()失败的原因。

正如其他人指出的那样,您的代码非常容易受到SQL注入的攻击。 您应该使用准备好的语句来解决此问题。

正如@viakondratiuk指出的那样,您应该重写代码。 现在,您执行两次SELECT查询。 这只会使您的脚本陷入困境,并使维护变得更加困难。

您应该这样进行:

$result = mysqli_query($con, "Select * from Drinkers where userID = '$user' AND password = '$pass'");
$row_cnt = mysqli_num_rows($result);

当然,不要忘记sql注入。

您可以阅读本主题以避免它们。

你可以试试这个吗

  $result = mysqli_query("SELECT * FROM Drinkers where userID = '".mysqli_real_escape_string($user)."' AND password = '".mysqli_real_escape_string($pass)."'") or die("Error " . mysqli_error($con));

    if (mysqli_num_rows($result) >0)
    { // correct info
        while($row = mysqli_fetch_array($result));
        {//cookie implementation
            $expire = time() + 60*60*24; //1 day
            setcookie('idNum', $row['idNum'], $expire);
            echo "Logged in as <b>".$row['userID']."</b>";
        }
    }else{ // wrong info
        echo "<b>wrong id or pass</b>";
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM