mysql查询错误3表JOIN


mysql query error 3 table JOIN

你好,我正在尝试加入3个表,并从中获取所有信息表名:fav、images、posts

收藏夹表存储:userid,postid(此表用于收藏夹广告)

图像表存储:postid,路径(1-5)

posts表存储有关post的所有信息:id、userid、title等

所以现在我正在做sql查询,witch应该选择从fav和joing post到图像的所有内容,其中$_session["userid"] = to userid它看起来是这样的:

<?php
                    $userid = $_SESSION["userid"];
                    $sql = "SELECT * FROM fav f JOIN posts p ON f.postid = p.id JOIN images i ON p.id = i.postid WHERE userid='$userid' ";
                    $res = mysqli_query($connect,$sql);
                     while ($row = mysqli_fetch_assoc($res)) {
                         $postid = $row["postid"];
                         ?>
                        <div id="ads">
                            <div id="titlepic">
                            <a href="review.php?id=<?php echo $postid; ?>"><?php echo $row["title"]; ?></a><br>
                            <a href="review.php?id=<?php echo $postid; ?>"><img src="<?php if(!empty($row["path1"])) { echo $row["path1"]; } else echo "image/noimage.png"; ?>" height="100px" width="150px"></a>
                            </div>
                            <div id="dates">
                                <b>Date Added:</b> <?php echo date('m/d/Y H:i', $row["dateadded"]); ?><br>
                                <b>Renew Date:</b> <?php if($row["renewdate"] > 0){ echo date('m/d/Y H:i', $row["renewdate"]); } ?><br>
                                <b>Location:</b> <?php echo $row["location"]; ?><br>
                                <b>Price:</b> <?php echo $row["price"]."&pound"; ?><br>
                            </div>
                        </div>
                        <hr width="100%">
                        <?php
                     }
                ?>

但我在放入WHERE userid='$userid'后出现错误,错误听起来像是"Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:'wamp'www'project'fav.php on line 129"

我不明白的问题在哪里,因为如果我不做where部分,一切都会在没有警告和错误的情况下工作

将查询更改为

 $sql = "SELECT f.*,p.*,i.* FROM fav f JOIN posts p ON f.postid = p.id JOIN images i ON p.id = i.postid WHERE f.userid='$userid' ";

我假设userid属于fav,如果它属于这些表,请将其更改为p.userid或I.userid。

这个错误意味着你的查询有问题。所以试着在phpmyadmin中运行查询,看看错误是从哪里来的。

也许是你的问题:

userid在您的查询中不明确

因此,选择哪个表必须在where子句f或p中:)