使用PHP删除MySQL数据库中多行的更好方法?

tun*_*ani 1 php mysql sql-delete

假设我有一个带有一堆mysql表的数组的数组:

$idList = array('1','2','3','4','5');
Run Code Online (Sandbox Code Playgroud)

我想删除与每个id关联的行.哪种方法更优选/更好/更快(IYO)?

$idListString = implode(",",$idList);
mysql_query("DELETE FROM this_table WHERE id IN ($idListString)");
Run Code Online (Sandbox Code Playgroud)

要么

foreach($idList as $value) {
mysql_query("DELETE FROM this_table WHERE id = '$value'");
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ick 6

我不是专家,但我相信

$idListString = implode(",",$idList);
mysql_query("DELETE FROM this_table WHERE id IN ($idListString)");
Run Code Online (Sandbox Code Playgroud)

是比较快的.原因是,它只进行一次查询.较少的数据被发送到服务器,并且在一个命令中一次性处理.

一般来说,使用另一种方法,如果您说300个值,这意味着您正在进行300次额外的函数调用,300次与服务器的通信等,但实际上可能会有所不同.

编辑:此外,即使您可以确定数据不是恶意的,您也应该始终使用正确的MySQL转义.请参阅http://php.net/manual/en/function.mysql-real-escape-string.php并考虑使用mysqli或PDO.