既存のデータ ストレージ php コードをmysql_*
関数から PDO に変更し、手続き型から OOB プログラミングに変更しています。何かに気づいたとき、私は SQL ステートメントを更新していました。
INSERT
複数のテーブルとクエリ用に配列を設定しています。バインド値として機能するように配列を定義していたため、バインドされた値が呼び出される順序が と で異なることにUPDATE
気付きました。簡単な例を次に示します。UPDATE
INSERT
$bound_values = array(
':column_aa' => 'aa',
':column_ab' => 'ab',
':column_ac' => 'ac'
)
);
の SQL の例INSERT
:
INSERT INTO `table_a`
(`id`, `column_aa`, `column_ab`, `column_ac`)
VALUES
('', :column_aa, :column_ab, :column_ac);
そしてUPDATE
:
UPDATE `table_a` SET
`column_ab` = :column_ab, `column_ac` = :column_ac, `column_aa` = :column_aa;
PHP PDO の例:
$pdo = new PDO('mysql:host=localhost;dbname=example', 'root', '');
// The second parameter of the PDO cursor is what I saw that raised the flag
$sth = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute($boud_values);
だから私の質問は、SQL ステートメントが$bound_values
配列に対してどのような順序であるかについて問題なくこの方法を使用し続けることができるか、それとも懸念して変更を加える必要があるかということです。
私が作業している既存のコードは、上に示した SQL ステートメントほど単純ではないことに注意してください。