这是我的问题。

$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_idwhere子句中可能不明确,您希望使用联接表之一引用列。
post_idorder by子句中会非常复杂,您需要使用一个联接表来引用列。

关于php - 这是联接表的正确方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22678787/

10-11 03:15
查看更多