我正在檢查一個項目,我發現這個代碼是假設從MySQL
刪除記錄,儘管這不是最好的方法來實現這個我必須做出這個工作,但對我來說是好的,這就是爲什麼我在這裏,因爲我沒有看到錯誤或這個代碼有什麼問題,不顯示錯誤,警告,沒有什麼我直接在PHPMyAdmin
測試代碼,它運行良好,所以這是代碼...從foreach循環中的MySQL刪除記錄 - PHP
$get_records = mysql_query('SELECT id_detail FROM my_table WHERE user_id = "'.$user_id.'" AND last_date BETWEEN "'.$date1.'" AND "'.$date2.'"') or die (mysql_error());
$array_details = array();
while ($details = mysql_fetch_array($get_records)) {
$array_details[] = $details['id_detail'];
}
$array_details = array_unique($array_details);
foreach ($array_details as $id_detail) {
$delete_detail = mysql_query("DELETE FROM my_table WHERE user_id = '".$user_id."' AND id_detail = '".$id_detail."'") or die (mysql_error());
}
我用相同的ID細節(這這樣工作)在同一個表有兩個記錄,所以如果我與foreach
循環中查詢得到的ID正確地將它應該刪除所有與id_detail
和user_id
記錄並不重要,如果在查詢我說這之間的日期得到這些ID,它刪除只有一個,那一個是具有
我不知道這是爲什麼範圍之間的日期不刪除兩個,關於我失蹤的一些想法?
注意:正如我之前所說,如果我直接在PHPMyAdmin
中執行該查詢,它工作正常,如果我從PHP中刪除它,則只刪除一個。
也許它只能得到一個id而不是兩個(在這個腳本中) –
爲什麼你會使用PHP作爲這個中間人?您正在迴避MySQL的內置邏輯並通過n + 1增加您的查詢。爲什麼不做一個'DELETE FROM {logic}'語句?即使由於某種原因,您確實希望在所有這些東西之間都有PHP邏輯,但您有一組主鍵(假設),那麼爲什麼不利用'WHERE IN'來減少查詢呢? – Blake
如果您在表格中始終有2個條目,則按偏移量進行刪除可能會解決此問題,如i = 0; foreach($ a as $ b){$ my_query to del $ b [0]; $ I ++;} – xYuri