すべての MySQL 接続を古い mysql_query から PDO に切り替えようとしています。異なる配列を使用して MySQL テーブルの複数の行と列を更新しようとすると、次のエラーが表示されます。
[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。'(accnt, car, radio, misc) value ('admin', '300.00', '400.00', '10.00') WHERE ID' at line を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。 1
次のコードから:
$account = $_POST['account'];
$car_lease = $_POST['car_lease'];
$radio_lease = $_POST['radio_lease'];
$misc_lease = $_POST['misc_lease'];
$lease_ID = $_POST['lease_ID'];
//$data = array_map(null,$account,$car_lease,$radio_lease,$misc_lease);
$A = count($lease_ID);
try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$STH = $DBH->prepare('UPDATE lease (accnt, car, radio, misc) values (:account, :car_lease, :radio_lease, :misc_lease) WHERE ID = :lease_ID');
$i = 0;
while($i < $A) {
$STH->bindParam(':account', $account[$i]);
$STH->bindParam(':car_lease', $car_lease[$i]);
$STH->bindParam(':radio_lease', $radio_lease[$i]);
$STH->bindParam(':misc_lease', $misc_lease[$i]);
$STH->bindParam(':lease_ID', $lease_ID[$i]);
$STH->execute();
$i++;
}
}
catch(PDOException $e) {
echo "I'm sorry, but there was an error updating the database.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
この問題は、ステートメント ハンドルの呼び出し方法に起因していると思いますが、構文のどの部分が間違っているのかわかりません。また、これはそのような状況を処理するための最良の方法ですか? または、テーブル内の複数の行を更新するより良い方法はありますか?