ホームページ > バックエンド開発 > PHPチュートリアル > SQL クエリのテーブル名または列名に PDO パラメータを使用できますか?

SQL クエリのテーブル名または列名に PDO パラメータを使用できますか?

Linda Hamilton
リリース: 2024-12-25 03:20:21
オリジナル
813 人が閲覧しました

Can PDO Parameters Be Used for Table or Column Names in SQL Queries?

PDO パラメーター: テーブル名または列名を入力として受け入れられますか?

準備された PDO にテーブル名をパラメーターとして含めようとしています以下のコード スニペットに示すように、ステートメントは次のようになります。失敗:

$stmt = $dbh->prepare('SELECT * FROM :table WHERE 1');
if ($stmt->execute(array(':table' => 'users'))) {
    var_dump($stmt->fetchAll());
}
ログイン後にコピー

なぜこれは不可能ですか?

PDO パラメーターは、クエリの実行中に動的に割り当てられるデータ値を対象としています。一方、テーブル名と列名はデータベース スキーマの静的要素であり、パラメータ化には適していません。

テーブル名を含める安全な代替手段

安全に挿入するにはテーブル名を SQL クエリに含める場合は、データを手動でフィルタリングしてサニタイズすることをお勧めします。これは、クエリを動的に実行する関数にホワイトリストに登録された switch() ステートメントを組み込むことで実現できます。

function buildQuery( $get_var )
{
    switch($get_var)
    {
        case 1:
            $tbl = 'users';
            break;
    }

    $sql = "SELECT * FROM $tbl";
}
ログイン後にコピー

特定のケースを設定し、無効なシナリオを処理することで、クエリは許可された条件でのみ実行されます。テーブル名。このアプローチにより、ユーザー入力が SQL クエリに直接影響を与えず、データの整合性が維持されます。

以上がSQL クエリのテーブル名または列名に PDO パラメータを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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