在一个循环中执行两个 PDO 语句


Executing two PDO statements in one loop

我有一个用于PDO语句的for循环,我希望它做两件事。 数据以称为$data的数组数组从用户设备接收。 我想将每一行插入到一个名为"theJack"的表中。 这部分工作正常。

然后,我想要另一个语句来检查$data表中的 [用户名] 和 [id],并更新 theJack 中的列([同步] 值"Y"或"N"),其中 [用户名] 和 [id] 在两个表中都匹配。 到目前为止,我有这个(现在只是使用 [用户名] 进行测试):

for($i = 0; $i<count($data); ++$i) {  
    $row = $data[$i];
    $userName = $row[userName];
    $STH = $conn->prepare("INSERT INTO theJack (id, phoneID, userName, noDeer, Lat, Lon, Acc, Time, Synched) value (:id, :UUID, :userName, :noDeer, :lat, :lng, :accuracy, :timestamp, :synched)");
    $UPD = $conn->prepare("UPDATE theJack SET Synched = 'Y' WHERE userName= :userName");
    $UPD->bindParam(':userName', $userName);
    $STH->execute($row);
    $UPD->execute($row);
}

$row是输入$data数组中的每一行。 $row[用户名] 是该行中的用户名。 $STH是 INSERT 语句,$UPD是 UPDATE 语句。

到目前为止,INSERT 语句本身工作正常。 添加 UPDATE 语句也有效,直到我尝试添加 WHERE 子句。

补充一点,我得到许多绑定变量与令牌数量不匹配的错误。

又一个愚蠢的错别字问题。

$UPD->execute();