select read.*,user.uname,category.cname from read left join user,category on read.uid=user.uid,read.cid=category.cid order by date desc limit 0,10
mysql中有三个表:
read
category
user
表read中有uid,cid和rid,rdate
表category中有cid,cname
表user中有uid,uname
现在就是要从read中选出所有的,但是要知道uid对应的uname,但是read表中只有uid,没有uname;还要获得cname,但是read表中只有cid,没有cname。
如何才可以选出来呢?
另外的就是我的一个SQL语句竟然是错误的:
- SQL code
- select * from read
显示的错误是如下的:
- HTML code
- Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\newread.php on line 13
我的PHP代码是这样的:
- PHP code
- include_once("back/conn.php"); $query4="select count(*) as total from read"; echo $query4; $result4=mysql_query($query4); $totalnum=mysql_num_rows($result4);//总记录数为$totalnum
我该怎末做才可以选出呢?
另外我的这个代码是错误在了哪里呢?
----------------------------------------------------------------
解决办法:
- SQL code
- SELECT `read`.*,`user`.`uname`,`category`.`cname` FROM `read` LEFT JOIN `user` ON(`read`.`uid`=`user`.`uid`) LEFT JOIN `category` ON(`read`.`cid`=`category`.`cid`) LIMIT 0,10
read是保留关键字.加界定符就行了.我刚刚都忽略了这一点.
注意养成好的习惯.表和字段都加上界定符.
定界符就是ESC下面的那个符号,还有就是英文状态下的单引号!
注意养成好的习惯.表和字段都加上界定符.
定界符就是ESC下面的那个符号,还有就是英文状态下的单引号!
没有评论:
发表评论