Maison > développement back-end > tutoriel php > Pouvez-vous lier des noms de table dans les instructions préparées PHP PDO ?

Pouvez-vous lier des noms de table dans les instructions préparées PHP PDO ?

Susan Sarandon
Libérer: 2024-11-27 10:43:14
original
469 Les gens l'ont consulté

Can You Bind Table Names in PHP PDO Prepared Statements?

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();
    }
}
Copier après la connexion

Ensuite, créez une classe spécifique pour chaque table, telle que comme :

class MyTable extends AbstractTable {
    private $table = 'my_table';
}
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal