【问题标题】:PHP mysql error: "mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in"PHP mysql 错误:“mysql_fetch_assoc() 期望参数 1 是资源,给出的布尔值”
【发布时间】:2012-08-05 16:45:42
【问题描述】:

首先让我说我环顾四周发现了类似的帖子,但没有一个对我有帮助,所以这就是我请求你帮助的原因。

使用 PHP,我正在尝试执行两个 SQL 查询。第一个查询使用INNER JOIN 执行Select 语句,另一个执行普通select 语句。

这是我的代码:

$conn = mysql_connect(DBHOST,DBUSER,DBPASS);

mysql_select_db(DBNAME);
$result = mysql_query("
      SELECT a.`role` AS 'role'
      FROM authme
      INNER JOIN a
      ON `authme`.`username` = `a`.`username`
      WHERE `authme`.`username` = 'vidhu';
", $conn); 
echo mysql_result($result, 0) . "<br />";

mysql_select_db(DBNAME);
$result = mysql_query("SELECT `email` FROM `authme` WHERE `username` = 'vidhu'", $conn); 
echo mysql_result($result, 0) . "<br />";

所以当我执行这个页面时,我得到的是:

Admin   <--- Result from first query

Warning: mysql_result() expects parameter 1 to be resource, boolean given in    C:\Apache24\htdocs\test.php on line 12  <---- second query

单独执行这两个查询,工作正常,但是当两者结合时,我得到了那个错误。有什么想法吗?

感谢您抽出宝贵时间阅读本文! 维杜

【问题讨论】:

标签: php mysql select stored-procedures


【解决方案1】:

mysql_query 函数如果失败将返回布尔值 FALSE。您正在使用结果而不检查它是否失败,因此您传递的是 FALSE 值而不是正确的结果。

【讨论】:

  • 更不用说他根本不应该使用mysql_*。但这是 cmets 的故事。
【解决方案2】:

在使用mysql_query(query,connection) 时,您应该始终使用or die(mysql_error());

看起来像:

mysql_query("SELECT * FROM sometable") or die(mysql_error());

它不仅会返回 false,还会在错误点停止并回显您在 MYSQL 代码中遇到的确切错误。

【讨论】:

    猜你喜欢
    • 2014-01-02
    • 1970-01-01
    • 2013-07-09
    • 2013-11-13
    • 2013-04-23
    • 2012-09-10
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多