Query:
PHP でテーブル名をバインドできますかPDO?
問題:
bindValue() を使用してテーブル名をバインドしようとすると、エラーが発生します。この問題は、ユーザー入力を通じてテーブル名を動的に設定しようとすると発生します。
解決策:
いいえ、テーブル名を直接バインドすることはできません。
これは、ユーザーがデータベース内の任意のテーブルにアクセスできる可能性があるため、セキュリティ上の懸念によるものです。データベース。代わりに、次のことをお勧めします。
抽象化レイヤーを使用した安全な実装:
へテーブル データにアクセスするための安全なクラスを作成するには、次の手順に従います:
abstract class AbstractTable { private $table; private $pdo; public function __construct(PDO $pdo) { $this->pdo = $pdo; } public function describe() { return $this->pdo->query("DESCRIBE `" . $this->table . "`")->fetchAll(); } } class SomeTable extends AbstractTable { private $table = 'sometable'; }
次に、クラスを使用してテーブル データに安全にアクセスします:
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
以上がPHP PDOでテーブル名をバインドできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。