2012-02-21 67 views
0

我想寫快捷方式的代碼如何寫快捷方式的代碼上刪除

例如,我要刪除的條目,如果它有一定的話從數據庫my_table{id,my_words}

$sql= "delete from my_table where my_words like '%some1%' or my_words like '%some2%'"; 
mysql_query($sql) or die("query failed: $sql".mysql_error()); 

,我已經許多喜歡some3,some4,some5 ..等,所以我不能重複or my_words like '%some2%'

很多次,否則這將是很難與代碼是如此之久。 所以我如何寫數組或其他東西的快捷方式!

感謝您的幫助

+1

你想讓代碼重新使用嗎?只需將其包裝在一個對象中,或者可以一次又一次地調用的函數。使其足夠通用,您可以發送數組或單個字符串進行刪除。不要將正則表達式與SQL混用,如果處理不當,會導致安全問題。 – Jakub 2012-02-21 15:17:08

+0

同樣使用正則表達式會使查詢變慢。 – 2012-02-21 15:20:14

+0

這感覺就像你試圖以相當迂迴的方式解決問題。你試圖用上面的方法究竟是什麼?我猜刪除網址中有特定域名的網址?如果是這樣的話,可能值得在插入點單獨存儲域,即單獨的域將給你一個特定的域來選擇。只是一個想法。 – 2012-02-21 15:21:15

回答

1
$a = array('your','words',...); 

foreach($a as $k=>$value{ 
$sql= "delete from my_table where my_words like '%$value%'"; 
mysql_query($sql) or die("query failed: $sql".mysql_error()); 
} 

不使用或在您的SQL語句這一次,只是循環,因爲你需要刪除所有 - 只是做了每個單詞。

+0

完美的是我的問題是關於〜謝謝Elen – 2012-02-21 15:26:18

+0

你能解釋爲什麼要避免使用'DELETE [...] WHERE column =? OR column =?'?我沒有看到這樣做有任何問題。另一方面,我看到您的建議的性能問題。 – Basti 2012-02-21 15:26:30

+0

@巴斯蒂 - 因爲在這種情況下,這是沒有必要的,再次,因爲我明白傑克需要快速解決他的問題 - 不是一個長期的工作解決方案... – Elen 2012-02-21 15:32:38