可能重复:
mysql_num_rows(): supplied argument is not a valid MySQL result resource
$resultnx = mysql_query("SELECT * FROM `emails` WHERE `email` = '{$email}'");
$num_rows = mysql_num_rows($resultnx);
获取此警告警告:mysql_num_rows():提供的参数不是...中的有效MySQL结果资源。
答案 0 :(得分:4)
您的查询中似乎有一些错误,请使用die
查看错误:
$query = "SELECT * FROM `emails` WHERE `email` = '{$email}'";
$resultnx = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($resultnx);
另外,请检查以确保$email
正常:
var_dump($email);
答案 1 :(得分:0)
或尝试
$query = "SELECT * FROM `emails` WHERE `email` = '".$email."'";
$resultnx = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($resultnx);
答案 2 :(得分:0)
尝试输出$query
的内容,然后将其粘贴到某个查询执行工具中。
答案 3 :(得分:0)
这不能直接回答您的问题,但可能有更好的方法来检查重复项。考虑将电子邮件字段修改为唯一。从mySQL命令行(或PHPMyAdmin)执行以下操作:
ALTER TABLE `emails` ADD UNIQUE(`email`);
现在,如果您尝试插入电子邮件已存在的行,则会自行为您抛出错误。
答案 4 :(得分:0)
我认为您需要从$ email中删除大括号。
$query = "SELECT * FROM `emails` WHERE email = '$email'";
$resultnx = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($resultnx);
答案 5 :(得分:0)
您直接收到的错误
MySQL服务器已经消失
肯定是由MySql服务器关闭造成的。如果MySql Server和PHP脚本在同一个VPS上,那么您将需要准确查找导致数据库关闭(崩溃)的原因。检查服务器错误日志。他们应该告诉你问题是什么。
而不是按照您编写的方式执行查询,为什么不简单地执行以下查询:
$query = "SELECT count(*) FROM `emails` WHERE `email` = '".$email."'";
这样你就可以拉出行数而不是所有在MySql上运行得更快的数据(特别是如果索引email
)。
$query = "SELECT count(*) FROM `emails` WHERE `email` = '".$email."'";
$resultnx = mysql_query($query) or die(mysql_error());
$num_rows_array = mysql_fetch_array($resultnx);
$num_rows = $num_rows_array[0];
可以组合代码中的行。它们被分开以便更容易看到正在发生的事情。