2011-11-15 46 views
0

Possible Duplicate:
PHP Error: mysql_fetch_array() expects parameter 1 to be resource, boolean givenMysql的取副教授()错误

我在PHP新的,需要在下面的代码一些建议。我得到以下错误:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\wd\categories.php on line 42

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; 

} 

任何援助将不胜感激。

错误我回声mysql_error();:得到

你有一个错误的SQL语法;检查与您的MySQL服务器版本相对应的手册,以便在第2行的'LEFT JOIN wdcat ON wdccat.caid = wdcat.ccid LEFT JOIN wdclient ON wdccat.cl'附近使用正确的语法警告:mysql_fetch_assoc()期望参数1到是资源,布尔在42行提供的C:\ xampp \ htdocs \ wd \ categories.php

+0

检查你的'$ SQL'是不正确的。 – Rikesh

+0

您的查询没有SELECT – SERPRO

回答

0

尝试丢弃echo mysql_error(),因为您的查询出现问题。

可能是因为你缺少SELECT *

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库并使用bound parameters开始使用parameterised statements。进一步阅读 - http://forums.whirlpool.net.au/forum-replies.cfm?t=1234522

+0

正好。在运行SQL代码时,有两件事情你不能假设:“你的查询会成功”和“输入参数永远不会包含单引号”。 –

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来自同一张表。

+0

不,表格wdccat有“id”“caid”“clid”,表格wdcat“ccid”“ccname”“ccdescription”,表格wdclient“cid”“cname”“ctel”“cfax”。 – Boldie

+0

立即检查。不知道climage ... – CristiC