2017-08-21 112 views
-3

我想在查看錶中選擇類別ID,類別名稱,類別類型,費率列的平均值,我想自動保存結果表類別ID,類別名稱,類別類型,費率平均值。所以我嘗試下面的代碼。但它不起作用。所以如果你有任何解決方案,請幫我解決這個問題?或者如果有其他方法來完成我的任務,請您描述一下。幫助我快速修復此錯誤。 我想選擇評論表中的類別ID,類別名稱,類別類型,費率列的平均值,並且我想自動保存它的結果表類別ID,類別名稱,類別類型,費率的平均值。所以我嘗試下面的代碼。但它不起作用。所以如果你有任何解決方案,請幫我解決這個問題?或者如果有其他方法來完成我的任務,請您描述一下。幫助我快速修復此錯誤。用Select查詢插入查詢

<?php 
$con=mysql_connect("localhost","root",""); 
$db=mysql_select_db("testing",$con); 
function setReviews($con){ 
    if (isset($_POST['submit'])) { 
     $user_email=$_POST["user_email"]; 
     $user_name=$_POST["user_name"]; 
     $review=$_POST["review"]; 
     $rate=$_POST["rate"]; 
     $sql=mysql_query("SELECT user_email FROM review WHERE user_email='$user_email'"); 
     if (mysql_num_rows($sql)>0) { 
      echo "user mail already exist"; 
     }else{ 
      mysql_query("INSERT INTO review(user_email,user_name,rate,review) VALUES ('$user_email','$user_name','$rate','$review')"); 
     echo "submitted"; 
     } 
    } 
} 
function getratingsave($con){ 
    $category_id=1; 
     $sql="INSERT INTO result (category_id,cat_name,cat_type,t_rate) SELECT category_id,AVG(rate),cat_name,cat_type FROM review WHERE category_id='$category_id'"; 
     $result=mysql_query($sql,$con); 
} 
?> 
+2

這種方式會失敗嗎?什麼是實際的錯誤?查詢的結果是什麼? (提示:你不檢查結果或檢查錯誤,你應該,數據庫是*可能*告訴你什麼是錯誤的)。 – David

+0

前面的mysql擴展已被棄用;你應該使用mysqli或者pdo。以及如何正確調試使用這兩個時發生的錯誤,是你可以研究自己的東西。與您需要對SQL注入做同樣的事情。 – CBroe

+0

您在這裏已經有的評論是非常好的建議。同時檢查你是否正在調用你已經聲明的這些函數。 –

回答

1

第一:小姐匹配列的順序

$sql="INSERT INTO result (category_id,cat_name,cat_type,t_rate) SELECT category_id,AVG(rate),cat_name,cat_type FROM review WHERE category_id='$category_id'"; 

注:指定列的順序應與值順序進行匹配。

$sql="INSERT INTO result (category_id,cat_name,cat_type,t_rate) SELECT category_id,cat_name,cat_type,AVG(rate) FROM review WHERE category_id='$category_id'"; 

第二: MySQL是不推薦嘗試使用庫MySQLi或PDO。

第3張:而且還嘗試使用準備好的語句。

+0

我試過了,但它不起作用 –

+1

@NimeshaDharana:(1)我們都不知道你試過了什麼。 (2)你還沒有告訴我們關於「不工作」的含義的細節。此處沒有人可以看到您的屏幕或知道您的計算機內發生了什麼。你必須解釋這個問題。 – David

+0

我更新了礦到這個採石場.. $ sql =「INSERT INTO結果(category_id,cat_name,cat_type,t_rate)SELECT category_id,cat_name,cat_type,AVG(rate)FROM review WHERE category_id ='$ category_id'」; –