mysql_fetch_array和mysql_query在来自两个不同表的调用中不返回任何内容

时间:2013-03-20 00:49:32

标签: php mysql

我有两本表和用户。图书有一列id,用户有一列名为book_id。 users表格中包含有关从商店购买图书的用户的信息,其中包括从图书表格中查看book_id的列id

我的问题是,我一直试图这样做,但没有成功。

$query = mysql_query("SELECT * FROM books, users WHERE books.id='$id' OR users.id='$id' ");
while($row = mysql_fetch_array($query)){
    $info .= $row[0] . " " . $row[1] . "<br/>";
}
echo $info; 

Table books有一些数据,但用户是空的,我什么都没有作为输出!我错过了什么?

其他尝试:

SELECT * FROM books, users WHERE books.id='$id'返回空结果

SELECT * FROM books WHERE books.id='$id'返回5行

1 个答案:

答案 0 :(得分:0)

你错过了正确的JOIN

  

表格书有一些数据但是用户是空的而且我什么都没有作为输出

由于users表不包含任何记录,因此您需要使用LEFT | RIGHTFULL联接来获取结果集,具体取决于您要完成的操作。

因此,请尝试将您的查询更改为

SELECT * 
  FROM books b LEFT JOIN
       users u ON b.id=u.book_id
 WHERE ... 

这是 SQLFiddle