可能重复:
PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean given
我是PHP的新手,需要一些关于以下代码的建议。我收到以下错误:
警告:mysql_fetch_assoc()要求参数1为资源,第42行的C:\ xampp \ htdocs \ wd \ categories.php中给出布尔值
PHP代码:
$SQL= "FROM wdccat WHERE caid='$id'
LEFT JOIN wdcat ON wdccat.caid = wdcat.ccid
LEFT JOIN wdclient ON wdccat.clid = wdclient.cid";
$result = mysql_query($SQL);
((Line 42)) while ($db_field = mysql_fetch_assoc($result)) {
echo $str1;
echo $str2;
print $row['cid'];
echo $str3;
print $row['cid'];
echo $str4;
print $row['climage'];
echo $str5;
print $row['cname'];
echo $str6;
print $row['cid'];
echo $str7;
print $row['cname'];
echo $str8;
print $row['cid'];
echo $str9;
echo $str10;
}
任何帮助将不胜感激。
我用echo mysql_error();:
得到的错误您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'LEFT JOIN wdcat on wdccat.caid = wdcat.ccid LEFT JOIN wdclient on wdccat.cl'第2行附近使用正确的语法 警告:mysql_fetch_assoc()期望参数1是资源,第42行的C:\ xampp \ htdocs \ wd \ categories.php中给出布尔值
答案 0 :(得分:2)
您应该检查mysql_query()
的错误结果(返回false
),例如
$result = mysql_query($SQL);
if (false === $result) {
throw new Exception('Error in SQL query, you have: ' . mysql_error());
}
在您的情况下,查询格式不正确;您错过了SELECT
clause。
进一步的建议;尽快切换到PDO库并开始使用parameterised statements和bound parameters。进一步阅读 - http://forums.whirlpool.net.au/forum-replies.cfm?t=1234522
答案 1 :(得分:0)
尝试抛出echo mysql_error()
,因为您的查询有问题。
可能是因为您遗漏了SELECT *
答案 2 :(得分:0)
您的$ SQL不完整。它没有返回的字段。尝试:
$SQL= "SELECT wdclient.cid, climage, wdclient.cname FROM wdccat WHERE caid='$id'
LEFT JOIN wdcat ON wdccat.caid = wdcat.ccid
LEFT JOIN wdclient ON wdccat.clid = wdclient.cid";
这假设cid, climage, cname
来自同一个表。