Maison > développement back-end > tutoriel php > Pouvez-vous lier un nom de table dans PHP PDO ?

Pouvez-vous lier un nom de table dans PHP PDO ?

DDD
Libérer: 2024-11-14 10:36:02
original
1049 Les gens l'ont consulté

Can you Bind a Table Name in PHP PDO?

Lier le nom de la table dans PHP PDO

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 :

  • Coder en dur le nom de la table dans la requête SQL.
  • Utiliser une couche d'abstraction pour gérer les noms de table en toute sécurité.

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

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();
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal