mysqli_num_rows()期望参数1为mysqli_result,给定布尔值

时间:2013-12-21 06:06:28

标签: php mysql email registration

好的,我知道之前已经问过这个问题,但我搜索过的都没有作为解决方案。我一直在第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 个答案:

答案 0 :(得分:0)

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

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