我想使用pdo和update更新多行。由于某种原因,它适用于单行更新(从html textarea插入和覆盖)但不适用于多行,所以我认为我的错误是在foreach循环中的哪个地方应该逐行更新。
来自HTML textarea的overgiven(changeAccountData):
user|pass|region
user1|pass1|region1
我的Php部分
$accounts = explode(PHP_EOL, $_POST['changeAccountData']);
$quantity = sizeof($accounts);
// Batch size, calc iterations
$batchSize = 500;
for($idx=0;$idx*$batchSize < $quantity; $idx++){
$accountsPartial = array_slice($accounts, $idx*$batchSize, $batchSize);
// Prepare the Query
$query = "UPDATE EasyService SET password=? WHERE username=? AND region=?";
// Create the multiple value placeholder
$stmt = $db->prepare($query);
$i = 1;
foreach($accountsPartial as $item){
list($user, $pass, $region) = explode("|", $item);
$stmt->bindValue($i++, trim($pass));
$stmt->bindValue($i++, trim($user));
$stmt->bindValue($i++, trim(strtoupper($region)));
$stmt->execute();
}
}
我想知道在这种情况下我是否需要使用bindValue或bindParam?为什么这适用于单个帐户但不适用于多个帐户。我已经回复了所有$ user,$ pass和$ region,这很好。