Php Mysql查询,选择join two table

Php Mysql查询,选择join two table,php,mysql,sql,Php,Mysql,Sql,我有一个LIKE表、一个BOOK表和我的用户id 我只想从书桌上拿出我喜欢的书,上面有书名和作者 我的json将: {book_id:1,bookname:sample,author:sean,user_id:111} 桌子 -----------BOOK TABLE------------ ID ---- BOOK AUTHOR ---- BOOK NAME 1 2 ................................... USERS TABLE ID-------NA

我有一个LIKE表、一个BOOK表和我的用户id

我只想从书桌上拿出我喜欢的书,上面有书名和作者

我的json将:

{book_id:1,bookname:sample,author:sean,user_id:111}
桌子

-----------BOOK TABLE------------
ID ---- BOOK AUTHOR ---- BOOK NAME

1
2

...................................


USERS TABLE
ID-------NAME
1
2
.............

LIKE TABLE---------------------------
ID-----BOOK ID-------LIKER USER ID---
1
2
.....................................

要获取与喜欢相关的所有数据,可以运行此sql命令。 您可以循环并生成JSON的结果集。 确保在查询中正确指定了所有列名

select 
b.book_id,
b.bookname,
b.author,
u.user_id
from 
`like` l
inner join book b on b.book_id = l.book_id
inner join users u on u.user_id = l.user_id
如果需要筛选数据,只需在最后一次连接后添加where条件即可

where u.user_id = {your user id}

我应该把$user\u id放在哪里?在u.user=l.user\u id->上的内部连接用户u?你是说u.user\u id=l.user\u id吗?为什么我不能获得重复值密钥对?如果数组写得太多,请检查循环。也可以先在mysql上试试这个查询,看看你得到了什么。这并不是真正的结果,我需要“用户喜欢的书名和书号”。如果不太迟的话,我会考虑重命名类似的表。随着时间的推移,使用保留字作为表名会变得很烦人。
$stmt = $mysqli->prepare("SELECT book.*, users.*, like.* FROM like INNER JOIN
                          users ON like.liker_user_id = users.id INNER JOIN
                          book ON like.book_id = book.id WHERE
                          users.id = ?
                         ");
$stmt->bind_param( "d", $user_id); 

$stmt->execute();

$stmt->bind_result($col1);
// then fetch and close the statement