我的主管給了我一個關於PHP和SQL的任務,我試圖解決它,但都無濟於事。如何通過將字符串添加到指定的字段來更新我的表上的記錄?例如,如果列/字段中的記錄是'P000M000D000'。如何在'M'或'D'之前添加'0'而無需替換整個字符串。 UPDATE查詢會用添加的字符串替換該列中的整個記錄,而我不想那樣做。在記錄中插入字符串.... php ... mysql
有誰知道我需要使用的字符串函數?
開
我的主管給了我一個關於PHP和SQL的任務,我試圖解決它,但都無濟於事。如何通過將字符串添加到指定的字段來更新我的表上的記錄?例如,如果列/字段中的記錄是'P000M000D000'。如何在'M'或'D'之前添加'0'而無需替換整個字符串。 UPDATE查詢會用添加的字符串替換該列中的整個記錄,而我不想那樣做。在記錄中插入字符串.... php ... mysql
有誰知道我需要使用的字符串函數?
開
使用replace
功能,您可以指定搜索字符串,一列內的替換字符串。一定要限制where
條款。
update tablename set colname = replace(colname,searchstring,replacestring) where something=something
replace
在MySQL documentation被記錄在案。
嘿傑夫,謝謝你的迴應。你能否詳細說明一下。我對這些語言有點新鮮。所以我打算用什麼來代替'搜索字符串','替換字符串'和'某事'? (請參閱上面的示例) – Kelvin
既然你是一個初學者,我建議這樣做的三個步驟:
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);
這需要ping數據庫服務器兩次,而不是性能的好處。 – Johan
MySQL有很多漂亮的字符串函數:http://dev.mysql.com/doc/refman/5.5/en/string-functions.html
我會使用的方法是使用M
和D
作爲分隔符前和使用後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;
@kelvin如何建議更新表中的記錄而不使用UPDATE查詢? – Raz
@Jordan,這就是爲什麼我在這裏問,因爲我不知道,我的老闆知道我不如此 – Kelvin
@凱爾文啊,對不起,我跳到了錯誤的結論。 –