PHP PDOでテーブル名をバインドできますか?

DDD
リリース: 2024-11-14 10:36:02
オリジナル
982 人が閲覧しました

Can you Bind a Table Name in PHP PDO?

PHP PDO でテーブル名をバインド

Query:

PHP でテーブル名をバインドできますかPDO?

問題:

bindValue() を使用してテーブル名をバインドしようとすると、エラーが発生します。この問題は、ユーザー入力を通じてテーブル名を動的に設定しようとすると発生します。

解決策:

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

これは、ユーザーがデータベース内の任意のテーブルにアクセスできる可能性があるため、セキュリティ上の懸念によるものです。データベース。代わりに、次のことをお勧めします。

  • SQL クエリでテーブル名をハードコーディングします。
  • テーブル名を安全に処理するには、抽象化レイヤーを使用します。

抽象化レイヤーを使用した安全な実装:

へテーブル データにアクセスするための安全なクラスを作成するには、次の手順に従います:

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

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