Maison > Article > développement back-end > Pouvez-vous lier un nom de table dans PHP PDO ?
Requête :
Pouvez-vous lier un nom de table dans PHP PDO ?
Problème :
Tentative de lier un le nom de la table utilisant bindValue() entraîne une erreur. Le problème survient lorsque vous essayez de définir dynamiquement le nom de la table via la saisie de l'utilisateur.
Solution :
Non, il n'est pas possible de lier directement un nom de table.
Cela est dû à des problèmes de sécurité, car cela pourrait permettre aux utilisateurs d'accéder à des tables arbitraires dans la base de données. Au lieu de cela, il est recommandé de :
Implémentation sécurisée avec couche d'abstraction :
Pour créer une classe sécurisée pour accéder aux données de la table, suivez ces étapes :
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'; }
Maintenant, utilisez la classe pour accéder aux données de la table en toute sécurité :
$pdo = new PDO(...); $table = new SomeTable($pdo); $fields = $table->describe();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!