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

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

DDD
DDDoriginal
2024-11-14 10:36:02980parcourir

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 :

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 :

  • 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';
}

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!

Déclaration:
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