我有这段代码:
$con=mysqli_connect("example","example","example","example");
function check_input($value)
{
global $con;
// Stripslashes
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Quote if not a number
if (!is_numeric($value))
{
$value = "'" . mysqli_real_escape_string($con, $value) . "'";
}
return $value;
}
$checklogin = mysqli_query($con, "SELECT username, password FROM users WHERE username LIKE '".check_input($_POST['username'])."';");
if(mysqli_num_rows($checklogin) == 0)
{
echo "Username doesn't exist";
}
我收到了这个错误:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/u436120092/public_html/login.php on line 26 Username doesn't exist
我知道用户名不存在,但不是问题,我已经过测试,问题是mysqli_real_escape_string没有返回字符串。
是的,有人能帮帮我吗? 提前谢谢。答案 0 :(得分:3)
您的查询呈现如下:
FROM users WHERE username LIKE ''blarg'';
由于:
$value = "'" . mysqli_real_escape_string($con, $value) . "'";
和
LIKE '".check_input($_POST['username'])."';
格式错误的查询返回false
boolean
=> mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
附加说明:
使用准备好的陈述!!
(对不起Mark,你先得到了;我没有看过这些评论。)
答案 1 :(得分:0)
可能是您的查询没有从db获取数据。 请按照以下步骤操作:
1)首先回显您的查询并直接运行到mysql并确认其获取数据。 2)如果查询工作文件,则使用' mysqli_num_rows($ result)'函数来获取没有收集的行数。