0

如果没有选择任何内容,但由于某种原因它总是显示一个结果,我是 php 和我的 sql 的新手,试图从该表中获取所有结果。知道为什么

$query = "SELECT *, ROUND(AVG(d.rating),0) FROM restaurant AS r, review AS d WHERE 1=1 ";
if($vicinity) $query .= "AND r.vicinity=\"$vicinity\" ";
if($cuisine)  $query .= "AND r.cuisine=\"$cuisine\" ";
if($price)    $query .= "AND r.price=\"$price\"";
if($name)    $query .= "AND r.name LIKE \"%$name%\"";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {

我只拿到桌子上的第一项

4

3 回答 3

0

猜测你只会得到一个结果,因为没有 group by 的 avg 调用会触发一些有趣的行为。尝试添加组,我猜您还想将餐厅和评论与加入相关联。例如:

$query = "SELECT *, ROUND(AVG(d.rating),0) FROM restaurant AS r LEFT JOIN review AS d on r.id = d.restaurant_id WHERE 1=1";
...
...
$query .= ' GROUP BY r.id';
$result = mysql_query($query);

根据线程,听起来您也应该查看准备好的语句:)。并且SELECT *可能也应该只是SELECT r.*- 作为评级结果的一部分返回的数据在 group by (r.* 和 round(avg(d.rating),0) 值应该是之后将没有意义)

于 2012-08-04T06:33:19.993 回答
0

尝试使用准备好的语句并获取结果并使用迭代器在循环中解析和打印将得到。另请参阅本教程

于 2012-08-04T05:17:18.083 回答
0

我会亲自研究 PDO。您可以在此处的手册中找到很多相关信息。

于 2012-08-04T05:41:11.180 回答