你好,我正在尝试加入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"]."£"; ?><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中:)