插入值:准备语句还是多值查询? - php

在您看来并从性能的角度来看,在表中插入多个值的最佳解决方案是什么?

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注入。

一个有争议的答案将不胜感激:)

谢谢

参考方案

我喜欢后面的方法。每个数据库请求都必须发送到数据库服务器并接收结果-这需要时间,尤其是如果数据库服务器在另一台计算机上运行时。

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是发送到db的行数)。

另一方面,对于解决可能出现的单个错误(例如重复的键(尽管ON DUPLICATE KEY可以为您节省一些麻烦),错误的值等),您的控制较少。

方法的选择将像往常一样取决于您的应用程序。

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

PHP标头功能不起作用 - php

我曾经使用此功能从一个PHP页面重定向到另一个:header( 'Location: student.php?cnp='.$_REQUEST['name']) ; 在我的本地主机中,它确实可以工作,但是如果在Internet中对其进行测试,则不会重定向。我也尝试给出完整的路径(如http://.../student.p…

PHP数组可以这样做吗? - php

可以说;我有一个$ friends数组,其中有2,000个不同的friendID号+我有一个带有10,000 bulletinID号的$ bulletins数组,该$ bulletins数组还将具有另一个值,该ID的用户ID是发布公告条目的用户现在可以获取所有具有与FriendsID数组中的userID匹配的userID的bulletinID号吗?甚至有可能…

PHP中的可选函数输入 - php

我注意到在一些内置的PHP函数中,例如str_replace,有一些可选的输入变量。我可以在自己的函数中有可选的输入变量吗?如果是这样,怎么办?谢谢,布赖恩 php参考方案 第一种方法是对某些参数使用默认值:function doStuff($required, $optional = '', $optional2 = '�…

php fopen相对路径断开-神秘 - php

我知道“必须进行某些更改”,但是我的代码似乎整夜无故中断。我的服务器目录结构是这样的: / /脚本 /审计 /其他事情我在“脚本”文件夹中有一个脚本(假设它被称为“ /scripts/MyScript.php”),该脚本使用curl收集网页中的数据,并将其日期过的副本保存在“审核”文件夹中。要写入审核文件夹,我使用了 $ fh = fopen(“ ./ au…