在foreach循环中删除MySQL中的记录 - PHP

时间:2016-09-27 16:56:50

标签: php mysql phpmyadmin

我正在检查一个项目,我发现这段代码可能会删除MySQL中的记录,尽管这不是实现这一目标的最佳方法,但我必须使其成功,但对我来说是很好,这就是为什么我在这里,因为我没有看到错误或这个代码有什么问题,没有显示错误,警告,没有我直接在{{1它运作良好,所以这就是代码......

PHPMyAdmin

我在同一个表中有两条记录具有相同的ID详细信息(这样就可以这样工作),所以如果我在$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,它应该删除所有记录{ {1}}和foreach无关紧要,如果在查询中我说在哪些日期获取这些ID之间,它只会删除一个,而且哪一个的日期介于该范围之间

我不知道为什么不删除这两个,对我错过的内容有所了解?

注意:正如我之前所说,如果我直接在id_detail中进行查询,它可以正常工作,如果我从PHP中删除它只会删除一个。

1 个答案:

答案 0 :(得分:0)

使用此查询替换该代码是否适合您?

$delete_detail = mysql_query("DELETE FROM my_table WHERE user_id = '".$user_id."' AND id_detail IN (SELECT id_detail FROM my_table WHERE user_id = '".$user_id."' AND last_date BETWEEN '".$date1."' AND '".$date2."')") or die (mysql_error());