0

何も選択されていない場合、このテーブルからすべての結果を取得しようとしているのに、何らかの理由で常に1つの結果が表示されます。理由は何でも

$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

準備されたステートメントを使用して結果を取得し、反復子を使用して解析し、ループで出力してみてください。このチュートリアルも参照してください。

于 2012-08-04T05:17:18.083 に答える
0

私は個人的にPDOを調べます。詳細については、こちらのマニュアルを参照してください。

于 2012-08-04T05:41:11.180 に答える
0

group by なしの avg 呼び出しが興味深い動作をトリガーしているため、1 つの結果しか得られないと推測しています。グループを追加してみてください。レストランとレビューも結合に関連付けたいと思います。例えば:

$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 に答える