在您看来,从性能的角度来看,在表格中插入多个值的最佳解决方案是什么?
1 - 准备好声明:
$usersId = Users::getAllId($this->sql);
$prep = $this->sql->prepare('INSERT INTO notification_actualites (idUser,idNews) VALUES(:idU,:idN)');
foreach($usersId as $idU)
{
$prep->execute(array(
':idU' => $idU,
':idN' => $idN
));
}
2 - 或使用多值查询:
$usersId = Users::getAllId();
$values='';
foreach($usersId as $id)
{
$values.='(\''.$id.'\','.$idActu.'),';
}
$values = substr($values,0,strlen($values)-1);
$this->sql->query('INSERT INTO notification_actualites VALUES'.$values);
这里的安全方面不是问题,在这两种情况下,代码都适用于防止sql注入。
一个有争议的答案将不胜感激:)
由于
答案 0 :(得分:2)
我更喜欢后面的方法。每个数据库请求都必须发送到数据库服务器并接收结果 - 这需要时间,尤其是在数据库服务器在不同的计算机上运行时。
time_to_prepare_query + time_sending_query + time_to_executing_query + time_receiving_results + time_processing_results
使用第二种方法时,我不必计算time_sending_query和time_receiving_results n 次( n 是发送到数据库的行数)。< / p>
另一方面,您对解决可能出现的个别错误(如重复键(尽管ON DUPLICATE KEY
可以省去一些麻烦),错误值等)的控制较少。
您的方法的选择将一如既往地取决于您的应用程序。