假设我有一个数组,其中包含一组mysql表的id:
$idList = array('1','2','3','4','5');
我想删除与每个id相关联的行。哪个方法更可取/更好/更快(IYO)?
$idListString = implode(",",$idList);
mysql_query("DELETE FROM this_table WHERE id IN ($idListString)");
或
foreach($idList as $value) {
mysql_query("DELETE FROM this_table WHERE id = '$value'");
}
最佳答案
我不是专家,但我相信
$idListString = implode(",",$idList);
mysql_query("DELETE FROM this_table WHERE id IN ($idListString)");
更快。原因是,它只进行一次查询。更少的数据被发送到服务器,它在一个命令中一次处理完。
一般来说,对于另一种方法,如果你有300个值,这意味着你要进行300个额外的函数调用,300个到服务器的通信,等等,尽管在实践中可能会有所不同。
编辑:此外,您应该始终使用正确的MySQL转义,即使您可以确保数据不是恶意的请参见http://php.net/manual/en/function.mysql-real-escape-string.php并考虑使用mysqli或PDO。