誰能告訴我如何防止這個PHP代碼替換兩個值?如何防止在同一字段中替換兩個值?
$sql2="UPDATE users SET urls = replace(urls, 'http://someurl.com', '') WHERE uname='$username'";
$result2=mysql_query($sql2);
例如,字段 「網址」 包含此:
使用上述代碼刪除這兩個URL,只留下「/page.html 」。
如何確保它只刪除該值並且不會刪除其他任何內容。
誰能告訴我如何防止這個PHP代碼替換兩個值?如何防止在同一字段中替換兩個值?
$sql2="UPDATE users SET urls = replace(urls, 'http://someurl.com', '') WHERE uname='$username'";
$result2=mysql_query($sql2);
例如,字段 「網址」 包含此:
使用上述代碼刪除這兩個URL,只留下「/page.html 」。
如何確保它只刪除該值並且不會刪除其他任何內容。
嗨 爲什麼不直接在where子句中做所有事情?
UPDATE users SET urls='' where urls='http://someurl.com' and uname='$username'
或者
UPDATE users SET urls='' where urls not like '%.html' and uname='$username'
我敢肯定,你可以算出來的東西您的具體要求
因爲我正在使用文本字段,所以不起作用。它包含同一字段中的所有網址。所以如果我設置urls =''它會刪除所有的URL。感謝您的回覆! :) – 2011-04-06 16:18:40
如果該字段實際上包含兩個網址之間的斷行,那麼你可以這樣做
$sql2="UPDATE users SET urls = replace(urls, 'http://someurl.com\r\n', '') WHERE uname='$username'";
For reco只有一個URL RDS,你可以做一個WHERE
條款:
WHERE urls='http://someurl.com' and uname='$username'
噢,謝謝!但是有一個問題 - 如果它後面沒有一行,我怎麼能在字段末尾刪除一個URL? – 2011-04-06 16:27:17
我想你也可以檢查''\ r \ nhttp:// someurl.com'',即前面的換行符? – Widor 2011-04-06 17:09:22
對不起,...... @jamesKG - 假設joeys例如您的代碼會更新什麼, @Widor - 這是非常特別的,只作品,如果要更換的網址在第一行。
喬伊,基本上沒有推薦的做法,在一個領域持有多個值......不需要說。現在你知道自己:-) 無論如何,假設你現有的數據結構更好地獲得了url的內容,在PHP中用你喜歡的方式替換它,然後用你的結果更新url。這應該比SQL更容易,儘管我很喜歡使用數據庫功能。 使用PHP,您可以通過「\ r \ n」將URL分解爲單個項目並單獨處理每個項目。
不要擔心額外的數據庫訪問(如果有用戶名索引)。
將「限制」添加到更新子句中。
UPDATE tbl
SET urls = replace(urls, 'http://someurl.com', '')
WHERE uname = $username
ORDER BY uname, urls
LIMIT n
如果您有更新可以更新多個記錄,但只希望修改一條記錄,請使用此選項。
我使用ORDER BY作爲安全網,以便您可以預測在您嘗試調試數據或代碼時將更新哪條記錄。
注意:這類問題通常是一種弱架構的症狀,您的數據不夠標準化或您的主鍵未被充分定義。理想情況下,在where子句中使用主鍵將允許您爲更新指定單個記錄。
-J Jorgenson -
只是有點評論:PHP!= SQL和PHP在這裏完全不相干恕我直言。將你的SQL嵌入到PHP字符串中只會讓事情變得更難以看清。 – 2011-04-06 16:21:33
是的,你說得對。對於那個很抱歉。 – 2011-04-06 16:25:55