这是我的问题。
$getdata = $conn->prepare("SELECT * FROM posts,
INNER JOIN users ON posts.user_id = users.id
INNER JOIN address ON posts.user_id = address.user_id
INNER JOIN favorites ON posts.user_id = favorites.user_id
WHERE user_id = {$userid} ORDER BY post_id");
这是连接多个表的正确方法吗?对我来说似乎不管用。
更新
这是查询中的更新。
$sth = $dbh->prepare("SELECT users.*, avatars.*, posts.*, favorites.* FROM posts
INNER JOIN users ON posts.user_id = users.id
INNER JOIN avatars ON posts.user_id = avatars.user_id
INNER JOIN favorites ON posts.user_id = favorites.user_id
ORDER BY posts.post_id");
$sth->execute();
$rows = $sth->fetchAll();
if(count($rows) > 0) {
foreach($rows as $row) {
?><h1><?php echo $row['post_id']; ?></h1><?php
?><h1><?php echo $row['id']; ?></h1><?php
?><h1><?php echo $row['avatar_thumb']; ?></h1><?php
?><h1><?php echo $row['title']; ?></h1><?php
?><h1><?php echo $row['username']; ?></h1><?php
}
}
?>
另一个更新
一切正常。这个问题已经解决了。谢谢大家的帮助!对于将来有连接表问题的其他人,我想提到检查一下您的表,确保它们不是空的;这就是为什么它对我显示为空的原因。
最佳答案
几乎没有问题:
$getdata = $conn->prepare("SELECT * FROM posts
INNER JOIN users ON posts.user_id = users.id
INNER JOIN address ON posts.user_id = address.user_id
INNER JOIN favorites ON posts.user_id = favorites.user_id
WHERE users.id = {$userid} ORDER BY posts.id");
问题是:
posts
子句中FROM
后的多余逗号。user_id
在where
子句中可能不明确,您希望使用联接表之一引用列。post_id
在order by
子句中会非常复杂,您需要使用一个联接表来引用列。关于php - 这是联接表的正确方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22678787/