Requête :
Pouvez-vous lier un nom de table dans PHP PDO ?
Problème :
Tenter de lier un nom de table à l'aide de 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 les données du tableau 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!