Abfrage:
Können Sie einen Tabellennamen in PHP-PDO binden?
Problem:
Versuch, eine zu binden Tabellenname mit bindValue() führt zu einem Fehler. Das Problem tritt auf, wenn versucht wird, den Tabellennamen dynamisch durch Benutzereingaben festzulegen.
Lösung:
Nein, es ist nicht möglich, einen Tabellennamen direkt zu binden.
Dies ist auf Sicherheitsbedenken zurückzuführen, da es Benutzern den Zugriff auf beliebige Tabellen in der Datenbank ermöglichen könnte. Stattdessen wird Folgendes empfohlen:
Sichere Implementierung mit Abstraktionsschicht:
Um eine sichere Klasse für den Zugriff auf Tabellendaten zu erstellen, Befolgen Sie diese Schritte:
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'; }
Nun verwenden Sie die Klasse, um sicher auf die Tabellendaten zuzugreifen:
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
Das obige ist der detaillierte Inhalt vonKönnen Sie einen Tabellennamen in PHP PDO binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!