PDO プリペアドステートメントを使用して MySQL の挿入/更新機能を改善するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-23 09:24:43
オリジナル
792 人が閲覧しました

How Can I Improve My MySQL Insert/Update Function Using PDO Prepared Statements?

PDO を使用したヘルパー関数の挿入/更新

データを挿入するための 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 のステートメント:

  • セキュリティ: プレースホルダーを使用して SQL インジェクションを防止します。
  • 効率: クエリを 1 回準備し、データベースを削減します。オーバーヘッド。
  • 一貫性: 一貫したデータ形式と型変換を保証します。

代替ソリューション: オブジェクト リレーショナル マッピング (ORM)

Doctrine ORM などの ORM の使用を検討してください。データ入力が簡素化され、手動でクエリを構築する必要がなくなります。

$table = new Table();
$table->fromArray($_POST);
$table->save();
ログイン後にコピー

このアプローチでは、定義されたエンティティ クラスに基づいてプロパティをデータベース フィールドにマッピングするプロセスが自動化されます。

以上がPDO プリペアドステートメントを使用して MySQL の挿入/更新機能を改善するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート