2011-10-13 20 views
1

我的主管給了我一個關於PHP和SQL的任務,我試圖解決它,但都無濟於事。如何通過將字符串添加到指定的字段來更新我的表上的記錄?例如,如果列/字段中的記錄是'P000M000D000'。如何在'M'或'D'之前添加'0'而無需替換整個字符串。 UPDATE查詢會用添加的字符串替換該列中的整個記錄​​,而我不想那樣做。在記錄中插入字符串.... php ... mysql

有誰知道我需要使用的字符串函數?

+0

@kelvin如何建議更新表中的記錄而不使用UPDATE查詢? – Raz

+0

@Jordan,這就是爲什麼我在這裏問,因爲我不知道,我的老闆知道我不如此 – Kelvin

+0

@凱爾文啊,對不起,我跳到了錯誤的結論。 –

回答

-1

使用replace功能,您可以指定搜索字符串,一列內的替換字符串。一定要限制where條款。

update tablename set colname = replace(colname,searchstring,replacestring) where something=something 

replaceMySQL documentation被記錄在案。

+0

嘿傑夫,謝謝你的迴應。你能否詳細說明一下。我對這些語言有點新鮮。所以我打算用什麼來代替'搜索字符串','替換字符串'和'某事'? (請參閱上面的示例) – Kelvin

1

既然你是一個初學者,我建議這樣做的三個步驟:

1.要更新表檢索字段。

$query = "SELECT name FROM contact where uid=123"; 
$result = mysql_query($query); 
$row=mysql_fetch_array($result); 
$name=$row['name']; 

2.使用PHP字符串函數來修改你想要的任何方式的價值。

$fname = preg_split("/[\s]+/", $name); //splits on any number of space chars 

3.使用一個簡單的更新查詢。

$query = "update contact set name='$fname' where uid=123"; 
$result = mysql_query($query); 
+1

這需要ping數據庫服務器兩次,而不是性能的好處。 – Johan

2

MySQL有很多漂亮的字符串函數:http://dev.mysql.com/doc/refman/5.5/en/string-functions.html

我會使用的方法是使用MD作爲分隔符前和使用後SUBSTRING_INDEX提取的部分。
請注意,substring_index區分大小寫

SET @sampledata = 'P111M2222D3333'; 
UPDATE table1 
SET col1 
    = CONCAT(substring_index(@sampledata, 'M', 1), '0M'     /*P1110M*/ 
      ,substring_index(substring_index(@sampledata, 'D', 1), 'M',-1) /*222*/ 
      ,'0D' ,substring_index(@sampledata, 'D',-1))     /*0D333*/ 
WHERE col2 = 1234;