[英]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.