2012-12-27 136 views
0

我試圖用這個查詢更新表,但似乎沒有工作。pdo codeigniter不執行更新查詢

$query="UPDATE product SET qty = (qty - '$qty') WHERE barcode = '$barcode'"; 
    $result = $this->db->conn_id->prepare($query); 
    $result->execute(); 

我試過將查詢放在try catch塊內,但它不會引發任何錯誤。這個問題與在CodeIgniter中的實現有關,因爲這個查詢在codeigniter之外執行時正在工作。

+0

什麼是'conn_id'引用到存在?我沒有在[documentation](http://ellislab.com/codeigniter/user-guide/database/queries.html)的例子中看到這個。 – afuzzyllama

+0

http://ellislab.com/forums/viewthread/216844/#1001606 – swordfish

回答

1

看着你的代碼有幾件事情。

您沒有使用準備好的陳述權。使用準備好的語句的好處是將所需的變量傳遞給不同的函數,以便您可以正確地轉義它們。考慮以下內容:

$query="UPDATE product SET qty = (qty - ':qty') WHERE barcode = ':barcode'"; 

$stmt = $this->db->conn_id->prepare($query); 

$stmt->bindParam(':qty', $qty, PDO::PARAM_STR); 
$stmt->bindParam(':barcode', $barcode, PDO::PARAM_STR); 

$stmt->execute(); 

echo "Rows affected: " . $stmt->rowCount(); 

這裏我們將查詢並設置參數。然後我們將變量綁定到語句,以便它們正確地轉義。之後,我們可以執行語句,然後使用fetch()函數來獲得我們的回覆。傳入的枚舉將返回結果作爲關聯數組。

+0

此答案部分引用此[SO問題](http://stackoverflow.com/questions/5884761/how-can-i-use-pdo -in-codeigniter-2) – afuzzyllama

+0

感謝您的更正,但它仍然不會更新我的表格。 – swordfish

+0

更新了我的答案。查詢的行數是多少? – afuzzyllama

0

如果受影響的行是零,我想查詢是正確的,看看是否條碼變量的值在數據庫