Heim >Backend-Entwicklung >PHP-Tutorial >Können Sie Tabellennamen in vorbereitete PHP-PDO-Anweisungen binden?

Können Sie Tabellennamen in vorbereitete PHP-PDO-Anweisungen binden?

Susan Sarandon
Susan SarandonOriginal
2024-11-27 10:43:14441Durchsuche

Can You Bind Table Names in PHP PDO Prepared Statements?

PHP PDO – Tabellennamen binden

Ist es in PHP Data Object (PDO) möglich, einen Tabellennamen an eine vorbereitete Anweisung zu binden? ?

Antwort:

Nein, es ist nicht möglich, a zu binden Tabellenname im PDO.

Das Binden eines Tabellennamens birgt Sicherheitsrisiken, da Benutzer dadurch auf jede Tabelle in der Datenbank zugreifen können. Es wird empfohlen, Tabellennamen auf die Whitelist zu setzen, um sicherzustellen, dass nur autorisierte Tabellen abgefragt werden können.

Alternativer Ansatz:

Um sicher auf Tabellenmetadaten zuzugreifen, sollten Sie die Erstellung einer übergeordneten Klasse für Sie in Betracht ziehen Tabellenklassen, wie zum Beispiel:

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();
    }
}

Erstellen Sie dann für jede Tabelle eine bestimmte Klasse, wie zum Beispiel als:

class MyTable extends AbstractTable {
    private $table = 'my_table';
}

Mit diesem Ansatz können Sie sicher auf Tabellenmetadaten zugreifen:

$pdo = new PDO(...);
$table = new MyTable($pdo);
$fields = $table->describe();

Das obige ist der detaillierte Inhalt vonKönnen Sie Tabellennamen in vorbereitete PHP-PDO-Anweisungen binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn