2013-10-29 46 views
0

新數據添加到老我有這樣的腳本:在MySQL

foreach ($_GET[selected] as &$value) { 
    echo "$value|"; 
    mysql_query("UPDATE ordre SET enheder='$row3[enheder]|$value' WHERE id='1'") or die(mysql_error()); 
} 

它沒有做什麼,我想。我希望它從數組$ value中添加字符串到MySql中已經存在的字符串。

如果

$value = "Server1|Server2|Server3|"; 

那麼就應該更新 「enheder」 到 「舊文本|服務器1 |服務器2 | Server3的|」但它不?

+0

*「我希望它添加字符串」 * - 如果你想添加,那麼就不要使用'UPDATE'使用['INSERT' ](http://beginner-sql-tutorial.com/sql-insert-statement.htm)但我不太明白'enheder ='$ row3 [enheder] | $ value'' –

+0

@ Fred-ii-我讀到這個問題意味着OP想要用新的文本附加到舊文本來更新id ='1'的值。 – Gus

+0

@Gus說實話,我很難理解。看起來像你想出來的;-) –

回答

2

建立你想要在php中添加的字符串會更好,然後使用MySQL的CONCAT()函數將這一個字符串添加到已經在數據庫中的值。另外,當你從用戶輸入創建你的sql時,轉義這個輸入也是很重要的。你能做到以上

一種方法是:

<?php 
    $values = mysql_real_escape_string(implode("|", $_GET['selected'])) ; 
    $sql = " 
UPDATE ordre 
SET enheder = CONCAT(enheder, '|', '{$values}') 
WHERE id = '1' 
    " ; 
    mysql_query($sql) ; 
?> 
+0

$ _GET ['selected'] dosnt有所有的信息。 鏈接看起來像這樣:選擇%5B%5D = Server1的&選擇%5B%5D =服務器2&選擇%5B%5D = Server3的&選擇%5B%5D =服務器4 所有%5B和 因此,當IM使用d爲[]你的代碼只會用||||更新它 –

+0

@CasperMartinsen這個url將被php作爲數組處理,存儲在$ _GET ['selected']中,每個值('Server1','Server2'等)都是該數組中的一個元素。嘗試運行'var_dump($ _ GET ['selected']);'看看你得到了什麼。 – Gus

+0

感謝Gus的工作。這是我的錯誤,它沒有工作第一次;) –