我正在检查一个项目,我发现这段代码可能会删除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中删除它只会删除一个。
答案 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());