假设我有一个数组,其中包含一组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。

09-26 22:31