mysqli_num_rows()期望参数1为mysqli_result,boolean给出[duplicate]

这个问题在这里已有答案:

好的,我知道之前已经问过这个问题,但我搜索过的都没有作为解决方案 . 我一直在第21行得到这个错误:

<?php
include("config.php");
$con = mysqli_connect("$host", "$mysqlusername", "$mysqlpassword")or die("cannot connect");

$username=$_POST['username'];
$password=$_POST['password'];
$password2=$_POST['password2'];
$email=$_POST['email'];

if ($password == $password2) {

}
else 
{
echo "Passwords did not match.";
}

$encryptedpass = md5($password);

$query = mysqli_query($con,"SELECT * FROM members WHERE username = '". $username ."' OR email = '". $email ."'");
if (mysqli_num_rows($query) > 0)
{
echo 'Username or email already in use.';
}
else
{
mysqli_query($con,"INSERT INTO members (username, password, email)
VALUES ('$username', '$encryptedpass','$email')");
}

mysqli_close($con);
?>

此外,我知道我有一个MySQL注入漏洞 . 所以有人可以帮助我吗?

回答(1)

2 years ago

mysqli_query返回布尔值有两个原因:查询失败或查询未返回结果集 . 在这种情况下,由于您正在进行返回结果集(SELECT)的查询,因此只有第一个选项可以为true,因此查询必定已失败 . 找出错误消息是什么并修复您的查询 . 您可以使用mysqli_error找到它 .

您可能还需要在查询之前选择数据库 . 你只能连接 . 使用mysqli_select_db .