2015-11-01 95 views
0

我試圖執行查詢,以更新php.My PHP代碼的記錄是這樣的:MySQL查詢只選擇第一條記錄

$get_meals_info = "Select meal_id from orders WHERE order_id ='$order_id'"; 
$result = mysql_query($get_meals_info) or die(mysql_error());; 

if(mysql_num_rows($result)!=0) 
{ 
    while($meal_id = mysql_fetch_assoc($result)) { 
     $id= $meal_id['meal_id']; 
     //$update_status="Select meal_id from orders where order_id=" . $meal_id['order_id'] . ""; 

     $update_status = "update order_main SET STATUS='$order_status' WHERE id =" . $meal_id['meal_id'] . ""; 
     $result = mysql_query($update_status); 
     //$meal_id=null; 
     echo $id; 
    } 

我第一次得到所有與一個爲了吃飯IDS在我的第一選擇查詢,然後我嘗試使用更新每餐的狀態,而循環,但我得到什麼才更新而不是其他one.I第一頓飯記錄得到這個的回覆:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\learning\service\update_order_status.php on line 13 

真正

+0

我不知道變量來自你在查詢中注入的地方,但是你可以在一個查詢/沒有循環的情況下做到這一點。像'UPDATE ... WHERE ID IN(SELECT meal_id FROM ...)' – jeroen

回答

4

你使用相同的vari $result爲您的數據提取和更新,並且第一個update導致您丟失原始數據,然後$result只包含true而不是資源。

1

爲什麼你使用循環呢?您可以使用單個查詢完成此操作。例如:

update order_main 
    SET STATUS = '$order_status' 
    WHERE id IN (Select meal_id from orders WHERE order_id = '$order_id'); 

還要注意,您應該使用mysqli_函數並參數化查詢,以便您不直接傳遞用戶輸入。

+0

......正是......謝謝! – Talib