mysql_result无效资源

时间:2011-06-21 06:53:03

标签: php mysql function

这是我的代码

function code_exists($code){
  $code = mysql_real_escape_string($code);
  $code_exists = mysql_query("SELECT COUNT('url_id') FROM 'links' WHERE 'code'='$code'");
  return (mysql_result($code_exists, 0) == 1) ? true : false;
}

它应该检查数据库以确保$ code是否在其中 但它一直给我同样的错误

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in 
/home/codyl/public_html/projects/tests/url/func.inc.php on line 16

3 个答案:

答案 0 :(得分:5)

你在mysql查询中有语法错误试试这个。

他们不是单引号他们是反对的“

mysql_query("SELECT COUNT(`url_id`) FROM `links` WHERE `code`='$code'");

我建议你应该总是处理mysql错误。

你可以像这样重写

mysql_query("SELECT COUNT(`url_id`) FROM `links` WHERE `code`='$code'") 
                      OR
               trigger_error(mysql_error());

答案 1 :(得分:1)

当查询失败时,您没有捕获来自mySQL的错误。使用mysql_error()输出它们,例如像这样:

$code_exists = mysql_query(....);
if (!$code_exists) 
 trigger_error("MySQL error: ".mysql_error(), E_USER_ERROR);

(当您的网站上线并且关闭错误报告时,使用trigger_error()就是这样,用户看不到mySQL错误。)

在此特定实例中,对表名使用单引号无效,因此会出现mySQL语法错误。

您需要使用反引号或根本不使用引号。

答案 2 :(得分:1)

正如Shakti所说,你的sql中有错误

$code_exists = mysql_query("SELECT COUNT(`url_id`) FROM `links` WHERE `code`='$code'");

您需要使用刻度(`)包围字段名称,而不是单引号。如果查询按预期运行,您还应该添加一个语句来填充。

$code_exists = mysql_query("SELECT COUNT(`url_id`) FROM `links` WHERE `code`='$code'") or die('Error in my query: '. mysql_error());

这将导致你的程序失去抛出mysql错误。