Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 为每个循环更新一个循环中的多行_Php_Pdo - Fatal编程技术网

Php 为每个循环更新一个循环中的多行

Php 为每个循环更新一个循环中的多行,php,pdo,Php,Pdo,我想使用pdo和update更新多行。出于某种原因,它适用于从html文本区域插入和过度提供的单行更新,但不适用于多行,因此我认为我的缺点是foreach循环中的某个地方应该逐行更新 HTML文本区域changeAccountData的过度给定: 我的Php部分 我想知道在这种情况下是否需要使用bindValue或bindParam?为什么这适用于单个帐户,但不适用于多个帐户。我已经回显了$user、$pass和$region,这很好。我相信这是因为在第二个循环中,$I是4。把$i=1放在你的外

我想使用pdo和update更新多行。出于某种原因,它适用于从html文本区域插入和过度提供的单行更新,但不适用于多行,因此我认为我的缺点是foreach循环中的某个地方应该逐行更新

HTML文本区域changeAccountData的过度给定:

我的Php部分


我想知道在这种情况下是否需要使用bindValue或bindParam?为什么这适用于单个帐户,但不适用于多个帐户。我已经回显了$user、$pass和$region,这很好。

我相信这是因为在第二个循环中,$I是4。把$i=1放在你的外汇账户的顶部,放在外汇账户的内部,因为你是对的!!谢谢你调查这件事。有时我只需要再多看两眼:而且,我不使用PDO,所以我不确定它如何处理事务,但如果在循环中执行任何操作,它应该在SQL事务中。
user|pass|region
user1|pass1|region1
$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();
        }
    }