我有以下代码:
$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'");
if(mysql_num_rows($sql) == 0) { return false; }
else {
list($skID) = mysql_fetch_row($sql);
return $skID;
}
返回下面的错误。
mysql_num_rows():提供的参数不是一个有效的MySQL结果资源
我已经回了SQL并在数据库中运行它,我得到了一个结果,所以问题是什么-任何想法最受欢迎?
[编辑]对不起,我是一个绝对的白痴,试图在ms数据库上使用mysql函数!对不起!
您是否检查了您的连接是否已建立?也许可以尝试在查询之后输出查询结果。也试着回显mysql_error(),看看是否出了什么问题。
echo mysql_error();
运行查询的正确方式(以及一致的变量命名):
$sql = "SELECT id FROM logins WHERE id='" . (int)$this->skID . "'";
$result = mysql_query($sql) or trigger_error(mysql_error." in ".$sql);
这段代码会告诉你你的查询出了什么问题。
不建议使用die(),因为它会破坏代码执行并使页面看起来很乱。更不用说将错误消息无条件输出到屏幕是一个安全漏洞。
变化
$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'");
if (!$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'")) {
// handle error here
// for example:
die('MySQL Error: '.mysql_error());
// ...but don't show the result of mysql_error() in a production environment!!
}
您的查询失败,mysql_query()
返回FALSE
, mysql_num_rows()
期望结果资源,而不是布尔值,因此它发出您所看到的错误。
查询失败。使用mysql_errno检查原因
http://us2.php.net/mysql_errno