为每个循环更新a中的多个行

时间:2014-11-18 23:11:54

标签: php pdo

我想使用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,这很好。

0 个答案:

没有答案