PHP / MYSQL错误:mysql_num_rows():提供的参数不是有效的

时间:2011-11-03 12:38:39

标签: php mysql mysql-num-rows

我有以下代码:

$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函数!遗憾!

4 个答案:

答案 0 :(得分:1)

您是否检查过您的连接已建立。也许在您的查询后尝试输出查询结果。也尝试回显你的mysql_error(),看看是否有什么问题。

echo mysql_error();

直接查询后。

答案 1 :(得分:1)

运行查询的正确方法(以及一致的变量命名):

$sql    = "SELECT id FROM logins WHERE id='" . (int)$this->skID . "'";
$result = mysql_query($sql) or trigger_error(mysql_error." in ".$sql);

此代码会告诉您查询的错误。

建议不要使用die(),否则会破坏代码执行并使页面看起来很乱。更不用说向屏幕无条件输出错误信息是一个安全漏洞。

答案 2 :(得分:0)

更改

$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()需要结果资源,而不是布尔值,因此它会发出您看到的错误。

答案 3 :(得分:0)

您的查询失败。使用mysql_errno检查原因

http://us2.php.net/mysql_errno