Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 1-使用PDO查询批量更新用户数组_Php_Mysql_Pdo - Fatal编程技术网

Php 1-使用PDO查询批量更新用户数组

Php 1-使用PDO查询批量更新用户数组,php,mysql,pdo,Php,Mysql,Pdo,我目前正在通过数组循环,一次更新一行,例如: for ($i = 0; $i < count($users); $i++) { $query = "UPDATE users SET name = :name WHERE id = :id"; $statement = $pdo_conn->prepare($query); $result = $statement->execute('name' => $users[$i]['name'], 'id'

我目前正在通过数组循环,一次更新一行,例如:

for ($i = 0; $i < count($users); $i++) {
    $query = "UPDATE users SET name = :name WHERE id = :id";
    $statement = $pdo_conn->prepare($query);
    $result = $statement->execute('name' => $users[$i]['name'], 'id' => $users[$i]['id']);
}
for($i=0;$iprepare($query);
$result=$statement->execute('name'=>$users[$i]['name'],'id'=>$users[$i]['id']);
}
是否有任何方法进行此1查询或以任何方式进行优化?

使用foreach()并迭代$users数组,绑定值并在数组中执行语句

$stmt = $pdo->prepare('UPDATE users SET name = :name WHERE id = :id');
foreach($users as $user)
{
    $stmt->bindValue(':name', $user['name']);
    $stmt->bindValue(':id', $user['id']);
    $stmt->execute();
}
使用foreach()并迭代$users数组,在数组中绑定值并执行语句

$stmt = $pdo->prepare('UPDATE users SET name = :name WHERE id = :id');
foreach($users as $user)
{
    $stmt->bindValue(':name', $user['name']);
    $stmt->bindValue(':id', $user['id']);
    $stmt->execute();
}

您只能在循环之前准备查询一次。是否需要对其进行优化?需要多长时间?它是否以任何方式影响整体性能?如果是-具体如何?如果需要使用特定值更新特定ID,则需要特定的更新查询,这样就无法避免对N个更新行进行N次查询。准备一次可能是一个小的优化,但大部分时间是寻找一个ID和更改名称,你不能避免这样做。如果有一个通用规则,比如更新10-100之间的所有ID,并将它们的名称设置为“bob”,那么情况就不同了更新数千行时需要花费一些时间,在我的实际代码中,会有更多的列被更新,where子句中会有更多的列被更新。准备一次,你们的意思是把我所有的查询连接在一起吗?例如,
“更新用户集name=”name“其中id=1”;“更新用户集name=“name2”,其中id=2”准备一次您只准备了一次查询。在传统的测量单位如秒、小时、年中,“有点长”是什么?是否必须在线执行或通过某些后台进程执行?您只能在循环之前准备查询一次。是否需要对其进行优化?需要多长时间?它是否以任何方式影响整体性能?如果是-具体如何?如果需要使用特定值更新特定ID,则需要特定的更新查询,这样就无法避免对N个更新行进行N次查询。准备一次可能是一个小的优化,但大部分时间是寻找一个ID和更改名称,你不能避免这样做。如果有一个通用规则,比如更新10-100之间的所有ID,并将它们的名称设置为“bob”,那么情况就不同了更新数千行时需要花费一些时间,在我的实际代码中,会有更多的列被更新,where子句中会有更多的列被更新。准备一次,你们的意思是把我所有的查询连接在一起吗?例如,
“更新用户集name=”name“其中id=1”;“更新用户集name=“name2”,其中id=2”准备一次您只准备了一次查询。在传统的测量单位如秒、小时、年中,“有点长”是什么?它必须在线执行还是通过后台流程执行?