Mysql Fetch Assoc() Error


Mysql Fetch Assoc() Error

可能重复:
PHP错误:mysql_fetch_array((要求参数1为资源,给定为布尔值

我是PHP新手,需要一些关于以下代码的建议。我得到以下错误:

警告:mysql_fetch_assoc((要求参数1为resource,在第42行的C:''examplep''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语法有错误;在第2行的'LEFT JOIN wdcat ON wdccat.caid=wdcat.ccid LEFT JOING wdclient ON wdccat.cl'附近,查看与MySQL服务器版本相对应的手册,以获得要使用的正确语法警告:mysql_fetch_assoc((要求参数1为resource,布尔值在第42行的C:''examplep''htdocs''wd''categories.php 中给定

您应该检查mysql_query()的结果是否有错误(返回false(,例如

$result = mysql_query($SQL);
if (false === $result) {
    throw new Exception('Error in SQL query, you have: ' . mysql_error());
}

在您的情况下,查询格式不正确;您缺少SELECT子句。

一些进一步的建议;尽快切换到PDO库,并开始使用带有绑定参数的参数化语句。进一步阅读这里-http://forums.whirlpool.net.au/forum-replies.cfm?t=1234522

由于查询有问题,请尝试删除echo mysql_error()

可能是因为您缺少SELECT *

您的$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来自同一个表。