2011-08-09 38 views
0

想知道如果有人能幫助 - 我敢肯定,這是以前的工作,但我不能讓一個MySQL更新工作變量嵌入到MySQL

$db->query("UPDATE entry_pending_details SET old_value = '{$value ["old_value"]}' WHERE id = '{$value ["id"]}'"); 

它顯然無法被識別爲當我變數放下硬編碼的值就可以了。

任何想法?

感謝

+0

那麼在它壞了之前你有什麼改變? – ain

回答

2

您必須使用單引號'或繞數組索引(如\")轉義雙引號。我用單引號替換雙引號

"UPDATE entry_pending_details SET old_value = '{$value['old_value']}' WHERE id = '{$value['id']}'" 
+0

試過了。數組var中的'''var不會「破壞」5.3.2上的字符串。 –

+0

嗯,真的?沒有意識到這一點,現在無法測試......無論如何,OP不會不提他使用的是什麼版本,或許它是早期的版本,但它不支持它?但Dan的使用參數的答案是要走向IMO的方式 – ain

+0

不知道它何時會發生變化。注意var名稱中的引號和空格,但是(雖然很奇怪)在5.3.2上工作。 –

3

你的問題可能是:

  1. 你有一個雙引號字符串中雙引號。這甚至不應該運行,這是一個語法錯誤。

  2. 變量名和括號之間的空格。

您可能容易受到SQL注入攻擊,並且肯定容易受到自己的邏輯錯誤的影響。

改爲使用綁定參數。

$st = $db->prepare("UPDATE entry_pending_details SET old_value = ? WHERE id = ?"); 
$st->execute(array($value['old_value'], $value['id'])); 
+0

我認爲這也是空間,但在我的5.3.2上,{}'表示法符合空格。例如'echo {$ x ['a']}'和'echo {$ x ['a']}'都可以在$ x ['a'] ='yo''上正常工作,並給我'喲' (意外。 –

-2

嘗試以下操作:

$sql = "UPDATE entry_pending_details SET old_value = '{$value ["old_value"]}' WHERE id = '{$value ["id"]}'"; 
mysql_query($sql) or die(mysql_error()); 
echo $sql; 

它把查詢到一個變量以便以後可以檢查它是否需要是一個好主意。

以及var_dump($values)顯示什麼?

0

我想要做的就是事先將值設置爲變量。例如

$old_value = $value['old_value']; 
$id = $value['id']; 
mysql_query("UPDATE entry_pending_details SET old_value = '$old_value' WHERE id = '$id'");