【发布时间】:2014-04-23 13:21:11
【问题描述】:
我正在制作一个 PHP SQL 数据库来编目短篇小说。在显示故事摘录的索引页面上,我正在尝试使用 while 循环函数将表(故事)中的 sql 行显示为无序列表。故事的评分保存在另一个表中,我使用 LEFT JOIN 和唯一列行“id”和“storyid”将其链接到“故事”表。
加载后,数据显示正常,但只显示一个 SQL 行,我的限制设置为 50。while 循环脚本和 sql(close) 脚本位于列表项的两侧。没有错误消息报告。
谁能说明为什么只显示 1 个项目?
<?php
include("db.php");
$query="SELECT s.*, AVG(r.rank) AS avrank
FROM (SELECT *
FROM stories
WHERE id BETWEEN 1 AND 100
ORDER BY RAND()
LIMIT 50) AS s
LEFT JOIN ratings AS r ON r.storyidr = s.id";
$result=mysqli_query($connection,$query);
?>
<ul id="tiles">
<?php
while ($data = mysqli_fetch_assoc($result)):
$id = $data['id'];
$author = $data['author'];
$page_path = $data['page_path'];
$title = $data['title'];
$avgrate = $data['avrank'];
if(is_null($page_path)){$page_path = "#";}
?>
<li>
<div class="post-info">
<h3><a href="create_page.php?id=<?php echo $id; ?>"><?php echo $title; ?></a></h3>
<h3>rating is <?php echo $avgrate; ?>/5</h3>
<span><a href="categories/<?php echo $category; ?>.php">
<label> </label>
</span> </div>
<div class="post-info-rate-share">
<form method="POST" action="rating.php?id=<?php echo $id; ?>">
<fieldset class="rating">
<legend> Rating: <?php echo $avgrate=round($avgrate,2); ?>/5</legend>
<input type="radio" id="star5" name="starno" value="5" onclick="this.form.submit()"/>
</fieldset>
</form>
</div>
</li>
<?php
endwhile;
mysqli_close($connection);
?>
</ul>
【问题讨论】:
-
您是否在 PHPMyAdmin 或类似工具中尝试过查询?
-
解决问题的好主意,我刚刚做到了,而且它也只提取了一项。我猜这就是我的错误所在?
标签: php sql while-loop