mysql_num_rows()给出错误布尔值

时间:2015-11-24 10:25:58

标签: php mysql

我的php应用程序中有这部分代码

$find_user = "SELECT * FROM tcms_module_profiles WHERE profile_contact_email = ".$_POST['email'];
$num_rows = mysql_num_rows(mysql_query($find_user));

返回此错误消息:

  

mysql_num_rows()期望参数1为资源,布尔值为

但是我将查询结果传递给mysql_num_rows()。我已经检查了查询并且它是正确的(因为如果我在phpMyAdmin上执行它会返回记录)。

提前致谢所有帮助

4 个答案:

答案 0 :(得分:2)

您需要将profile_contact_email值放在引号中,因为要插入VARCARE字段,我们需要引用它。并在查询中使用mysql_real_escape_string来阻止sql注入

$email = mysql_real_escape_string($_POST['email']);
$find_user = "SELECT * FROM tcms_module_profiles WHERE 
profile_contact_email = '".$email."'";
$result = mysql_query($find_user);
$num_rows = mysql_num_rows($result);
  

注意: - 不推荐使用mysql而是使用mysqli或PDO

答案 1 :(得分:1)

您的SQL查询失败,导致mysql_query返回一个布尔值为FALSE的值。它失败了,因为您没有在电子邮件中使用引号。

您的脚本也对SQL注入开放,顺便说一句。

答案 2 :(得分:0)

使用以下代码:

 $find_user = "SELECT * FROM `tcms_module_profiles` WHERE `profile_contact_email`='{$_POST['email']}';";
 $result = mysql_query($find_user);
 if(!$result){die("ERROR");}
 $num_rows = mysql_num_rows($result);

''周围的代码遗失$_POST['email'],您应首先检查查询是否为truemysql_ 已弃用使用mysqli_PDO扩展名。 Mysqli & PDO

上述代码的mysqli版本

$find_user = "SELECT * FROM `tcms_module_profiles` WHERE `profile_contact_email`='{$_POST['email']}'";
     $result = mysqli_query($find_user);
     if(!$result){die("ERROR");}
     $num_rows = mysqli_num_rows($result);

注意 - 您还需要根据mysqli更改mysql连接变量。

答案 3 :(得分:-1)

试试这个......

$find_user = "SELECT * FROM tcms_module_profiles WHERE profile_contact_email = '".$_POST['email']."'";