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”代码>准备一次您只准备了一次查询。在传统的测量单位如秒、小时、年中,“有点长”是什么?它必须在线执行还是通过后台流程执行?