0

これを行う適切な方法はありますか。テーブルの平均評価を計算し、同時に別のテーブルの結果を更新したいと考えています。PHP と MYSQL は初めてなので、何か助けていただければ幸いです

$query=mysql_query("INSERT INTO review (username, restaurant, rating, review) VALUES ('$username','$restaurant','$rating','$review')");
if($query)
{
    $avg_query="SELECT ROUND(AVG(rating),0) FROM review WHERE name =\"$restaurant\"";
    $avg_result=mysql_query($avg_query);
    $avg_row=mysql_fetch_array($avg_result);
    $rating=$row['ROUND(AVG(rating),0)'];
    if($avg_result)
    {   
        $update_query= "UPDATE restaurant SET rating=\"$rating\" WHERE name =\"$restaurant\"";
        $update_result=mysql_query($update_query);
    }
}
else
{
}

ありがとう!

4

3 に答える 3

0

別のオプションは、 mysql を使用することtriggerです。例(構文に縛られないでください):

CREATE TRIGGER after_insert_review
AFTER INSERT ON review
FOR EACH ROW
BEGIN
    UPDATE restaurant 
    SET rating = (SELECT ROUND(AVG(rating),0) FROM review WHERE name = NEW.restaurant)
    WHERE name = NEW.restaurant;
END

繰り返しますが、他の人が述べたように、PDOまたはMySQLiを使用します。

于 2012-08-04T06:47:23.493 に答える
0
UPDATE restaurant 
SET rating= (SELECT ROUND(AVG(rating),0) FROM review WHERE name ='$restaurant')
WHERE name ='$restaurant'
于 2012-08-04T06:29:58.683 に答える
0

この 2 つを次のように 1 つに結合します。

$query=mysql_query("INSERT INTO review (username, restaurant, rating, review) VALUES ('$username','$restaurant','$rating','$review')");
if($query)
{
    $avg_query="UPDATE restaurant a SET rating=(SELECT ROUND(AVG(rating),0) FROM review WHERE name =a.name) WHERE name ='".$restaurant."'";
    $avg_result=mysql_query($avg_query);
}
else
{
}

mysql_*そうは言っても、関数が減価償却されているため、PDO または mysqli に移行する必要があります。

于 2012-08-04T06:31:23.457 に答える