データを挿入するための PDO プリペアド ステートメント
提供されているヘルパー関数 dbSet、従来の MySQL ドライバーで使用する SET ステートメントを生成しますが、PDO プリペアド ステートメントはサポートされていません。これに対処するには、PDO の利点を活用して、関数の修正バージョンを利用できます。
修正されたヘルパー関数
更新された dbSet 関数は、次の配列を受け取ります。フィールド名と、対応する値の配列への参照。各フィールドのプレースホルダーを含む SET ステートメントを構築し、値を値の配列に追加します。
function dbSet($fields, &$values) { $set = ''; $values = array(); foreach ($fields as $field) { if (isset($_POST[$field])) { $set .= "`$field` = ?,"; $values[] = $_POST[$field]; } } return rtrim($set, ','); }
使用例:
$fields = explode(" ","name surname lastname address zip fax phone date"); $_POST['date'] = $_POST['y']."-".$_POST['m']."-"$_POST['d']; $query = "UPDATE $table SET ".dbSet($fields, $values).", stamp=NOW() WHERE>
利点準備された PDO のステートメント:
代替ソリューション: オブジェクト リレーショナル マッピング (ORM)
Doctrine ORM などの ORM の使用を検討してください。データ入力が簡素化され、手動でクエリを構築する必要がなくなります。
$table = new Table(); $table->fromArray($_POST); $table->save();
このアプローチでは、定義されたエンティティ クラスに基づいてプロパティをデータベース フィールドにマッピングするプロセスが自動化されます。
以上がPDO プリペアドステートメントを使用して MySQL の挿入/更新機能を改善するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。