ホームページ > バックエンド開発 > PHPチュートリアル > PHP PDO プリペアドステートメントでテーブル名をバインドできますか?

PHP PDO プリペアドステートメントでテーブル名をバインドできますか?

Susan Sarandon
リリース: 2024-11-27 10:43:14
オリジナル
470 人が閲覧しました

Can You Bind Table Names in PHP PDO Prepared Statements?

PHP PDO - テーブル名のバインド

PHP データ オブジェクト (PDO) では、テーブル名を準備されたオブジェクトにバインドすることができますか?ステートメント?

答え:

いいえ、PDO でテーブル名をバインドすることはできません。

テーブル名をバインドすると、次のようなセキュリティ リスクが発生します。これにより、ユーザーはデータベース内の任意のテーブルにアクセスできるようになります。承認されたテーブルのみがクエリできるように、テーブル名をホワイトリストに登録することをお勧めします。

代替アプローチ:

テーブルのメタデータに安全にアクセスするには、テーブルの親クラスを作成することを検討してください。テーブル クラス (例:

abstract class AbstractTable {
    private $table;
    private $db;

    public function __construct(PDO $pdo) {
        $this->db = $pdo;
    }

    public function describe() {
        return $this->db->query("DESCRIBE `$this->table`")->fetchAll();
    }
}
ログイン後にコピー

) 次に、各テーブルに次のような特定のクラスを作成します。次のように:

class MyTable extends AbstractTable {
    private $table = 'my_table';
}
ログイン後にコピー

このアプローチを使用すると、テーブルのメタデータに安全にアクセスできます:

$pdo = new PDO(...);
$table = new MyTable($pdo);
$fields = $table->describe();
ログイン後にコピー

以上がPHP PDO プリペアドステートメントでテーブル名をバインドできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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