我的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上执行它会返回记录)。
提前致谢所有帮助
答案 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']
,您应首先检查查询是否为true
。 mysql_
已弃用使用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']."'";