2011-08-29 83 views
0

我正在寫一個涉及mysql的php代碼。在某一點上,我必須更新我的數據庫中的一個表,我使用下面的兩個語句。但這些都不起作用。在php-mysql中更新表格

$temp = $row['tracking_id']; 

mysql_query("UPDATE order_products SET state=4.00 WHERE tracking_id = '$temp'"); 

請注意,我沒有收到錯誤消息。該表雖然沒有更新。還要注意,列名,表名是正確的。我也試過在WHERE子句中沒有$ temp附近的單引號。

與數據庫的連接很好。我知道這個COS選擇查詢工作正常。

任何想法?

感謝

+0

你有沒有想過把「」圍繞4.00? –

+0

你是否迴應了mysql_error(); ? temp是否包含正確的值?你是否嘗試在4.00左右添加「'? –

+0

試試這個'echo「UPDATE order_products SET state = 4.00 WHERE tracking_id ='$ temp'」'並將答案粘貼到mysql命令行客戶端。應該給你詳細的你缺少的東西 – Ravi

回答

3

嘗試的var_dump臨時

var_dump($temp); 

,並從您的查詢檢查錯誤

mysql_query("UPDATE order_products SET state=4.00 WHERE tracking_id = '$temp'") or trigger_error(mysql_error()." <here is that problem"); 

它會給你你的答案

+0

是的,工作。看起來有人刪除了我正在處理的表格。數據庫位於通用服務器上,因此需要花費一些時間才能弄清楚。 mysql_error非常有幫助。謝謝 – Nibhrit

+0

請不要死!這既不安全也不可用。 –

+0

@Col誰?什麼? – genesis

0

首先檢查的價值是什麼在$ temp中。

如果數值沒問題,可以這樣做來回應您的查詢。

echo $ sql =「UPDATE order_products SET state = 4.00 WHERE tracking_id ='$ temp'」; $ result = mysql_query($ sql);

它只用於測試和檢查查詢是否正常?嘗試直接運行它,看看是否有任何錯誤

0

你是如何獲取行?

使用mysql_tetch_rowmysql_fetch_array

如果你使用fetch_array它不是一個關聯數組,你不能做row['something'],只有row[index],所以用fetch_row來代替。

打印temp的值以驗證它是否正常,如果仍然找不到問題,請嘗試使用mysql_error()函數來打印最後一個mysql錯誤。

+0

行提取工作正常工作正在迴應此語句上方行的內容 – Nibhrit

0

請注意,我沒有收到錯誤消息。

難怪。您必須向數據庫詢問錯誤消息。

$tmp = mysql_real_escape_string($row['tracking_id']); 
$sql = "UPDATE order_products SET state=4.00 WHERE tracking_id = '$tmp'"; 
mysql_query($sql) or trigger_error(mysql_error()." ".$sql); 
var_dump(mysql_affected_rows); //to see if rows were changed. 

如果只打印0 - 那麼你在你的表有完全相同的值的行已經