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 サイトの他の関連記事を参照してください。