mysql查询错误3表JOIN

时间:2016-05-12 16:15:56

标签: php mysqli

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

fav table store:userid,postid(此表适用于喜爱的广告)

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

帖子表存储有关帖子的所有信息:id,userid,title等

所以现在我正在做sql查询女巫应该从fav和joing帖子和图片中选择所有内容$_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"错误后我收到错误

我不明白的问题是什么?如果我做不到,那么所有部分都可以正常工作而没有警告和错误

2 个答案:

答案 0 :(得分:1)

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

也许是你的问题:

userid在您的查询中含糊不清

所以选择哪个表必须在where子句f或p中:)

答案 1 :(得分:1)

将查询更改为

 $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 f,如果它属于这些表,则将其更改为p.userid或i.userid。