0

PDO ステートメントの for ループがあり、2 つのことを実行したいと考えています。データは、$data と呼ばれる配列の配列でユーザー デバイスから受信されます。「theJack」というテーブルに各行を挿入したいと思います。この部分は正常に動作します。

次に、別のステートメントで $data テーブルの [userName] と [id] をチェックし、[userName] と [id] が一致するジャックの列 ([同期] 値 'Y' または 'N') を更新したいと思います両方のテーブル。これまでのところ、これがあります(今のところ[userName]でテストしています):

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[userName] は、その行のユーザー名です。$STH は INSERT ステートメントで、$UPD は UPDATE ステートメントです。

これまでのところ、INSERT ステートメントは単独で正常に機能します。WHERE 句を追加しようとするまでは、UPDATE ステートメントの追加も機能します。

追加するだけで、バインドされた変数の数がトークンの数と一致しないというエラーが表示されます。

4

1 に答える 1

0

さらにばかげたタイプミスの質問です。

$UPD->execute();
于 2013-11-04T06:08:31.093 に答える