2012-08-05 72 views
0

给出首先让我说,我环顾四周,找到类似的帖子,但没有人帮助我,所以这就是为什么我我要求你帮忙。PHP的mysql错误:“mysql_fetch_assoc()期望参数1是资源,布尔在”

使用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 

单独执行这两个查询,工作正常,但两者相结合时,我得到的是错误。有任何想法吗?

感谢您的时间阅读本文! Vidhu

+1

您不需要重复选择相同的数据库 - 只有当您确实需要更改默认数据库时才需要。 – 2012-08-05 16:53:48

+2

请不要使用'mysql_ *'函数来编写新代码。他们不再维护,社区已经开始[弃用程序](http://goo.gl/KJveJ)。请参阅* [红盒子](http://goo.gl/GPmFd)*?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定哪些,[这篇文章](http://goo.gl/3gqF9)会帮助你。如果你选择PDO,[这里是很好的教程](http://goo.gl/vFWnC)。 – 2012-08-05 16:54:14

+0

[mysql_fetch_array()的可能的重复期望参数1是资源,布尔给出在选择](http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter-1-to-be-resource -boolean-given-in-select) – 2012-08-07 08:04:23

回答

2

如果失败,mysql_query函数将返回布尔值FALSE。您正在使用结果而不检查它是否失败,因此您传递的是FALSE值而不是正确的结果。做mysql_query(query,connection)你应该总是使用or die(mysql_error());

,所以它看起来就像当

+1

更不用说他不应该使用'mysql_ *'了。但这是评论的故事。 – 2012-08-05 16:54:38

0

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

不仅会返回false,它将停止在错误的点和回声准确的错误你使用MYSQL代码。

相关问题