2013-10-19 35 views
0

我有一種方案,我正在尋找基於現有列中的舊值使用新值更新類別列中的值。類別在單獨的表格中進行更改,並且需要在此表格中進行更新以反映更改。MYSQL REPLACE列值使用預準備語句,字符串版本

我使用預處理語句和兩個陣列的獸醫更換不同的價值取向:

$category = array($_POST['cat1'],$_POST['cat2'],$_POST['cat3'],$_POST['cat4']); 
$oldCategory = array($_POST['catOld1'],$_POST['catOld2'],$_POST['catOld3'],$_POST['catOld4']); 

for ($i=0;$i<4;$i++) { 
    $strg="UPDATE table_name SET CATEGORY = REPLACE (CATEGORY, ?, ?)"; 
    $sql = $mysqli->prepare($strg) or die($db->error()); 
    $sql->bind_param('ss', $oldCategory[$i], $category[$i]); 
    $sql->execute(); 
} 

我覺得這是我的REPLACE語句的關於導致剛剛掛起準備好的語句的語法,但無法在任何地方在線找到正確的格式。任何援助讚賞。謝謝。

更新:好吧,那些奇怪的事情之一:它現在工作。爲什麼?我不確定。墨菲定律總是很難對我們命名。 Wrikken,你是對的:語法沒有錯。希望我能把你打扮起來。

但是,希望上面的內容對其他人有用。它花了我很多,沒有在線參考來解決這個問題。希望有用。

+0

它應該工作('UPDATE ...字段名= REPLACE(字段名,oldstring,newstring)'),但根據在你的桌子上,它可能需要相當長一段時間.... – Wrikken

+0

表是微小的:最多100條記錄。不擔心時間。但是,不,我只是得到一個掛起,甚至沒有任何錯誤消息返回,只有500錯誤。蕩。 –

回答

0

使用本:

$strg="UPDATE table_name SET CATEGORY = REPLACE (CATEGORY,$oldCategory[$i],$category[$i])"; 
在這個地方

$strg="UPDATE table_name SET CATEGORY = REPLACE (CATEGORY, ?, ?)"; 
+0

我試圖解決,甚至使用mysqli_real_escape_string來確保適當的安全性,我嘗試過,和其他變化:仍然沒有喜悅。這是否消除了準備好的聲明需要的VALUES目標?無論如何,仍然以沒有錯誤信息的懸掛結束。謝謝,不過。 –