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 ステートメントの追加も機能します。
追加するだけで、バインドされた変数の数がトークンの数と一致しないというエラーが表示されます。