PHP PDO - Liaison des noms de table
Dans PHP Data Object (PDO), est-il possible de lier un nom de table à une instruction préparée ?
Réponse :
Non, il n'est pas possible de lier un nom de table dans PDO.
La liaison d'un nom de table introduit des risques de sécurité car elle permet aux utilisateurs d'accéder à n'importe quelle table de la base de données. Il est recommandé de mettre les noms de tables sur liste blanche pour garantir que seules les tables autorisées peuvent être interrogées.
Approche alternative :
Pour accéder en toute sécurité aux métadonnées des tables, envisagez de créer une classe parent pour votre classes de table, telles que :
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(); } }
Ensuite, créez une classe spécifique pour chaque table, telle que comme :
class MyTable extends AbstractTable { private $table = 'my_table'; }
En utilisant cette approche, vous pouvez accéder aux métadonnées de la table en toute sécurité :
$pdo = new PDO(...); $table = new MyTable($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!