Maison  >  Article  >  base de données  >  Les champs MySQL peuvent-ils être accessibles dynamiquement à l'aide de variables de chaîne ?

Les champs MySQL peuvent-ils être accessibles dynamiquement à l'aide de variables de chaîne ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-19 08:23:02853parcourir

Can MySQL Fields Be Accessed Dynamically Using String Variables?

Accès dynamique aux champs MySQL par variable

Problème :

Peut-on accéder par programme à un champ MySQL par son nom stocké dans un variable de chaîne, en particulier pour la mise à jour dynamique des valeurs de champ ?

Exemple d'utilisation Cas :

SET fieldname = NEW.`name`;
UPDATE table SET fieldname = 1 ;

Réponse :

La possibilité d'accéder dynamiquement aux champs MySQL par variable dépend du contexte.

Variables externes :

Si le nom du champ est stocké en tant que variable dans une application externe (par exemple, PHP), il est possible de construire une instruction MySQL valide.

Variables internes :

Cependant, si le nom du champ est stocké en tant que valeur dans une table MySQL , y accéder à l'aide de la syntaxe SQL standard n'est pas réalisable. Cela est dû à l'absence de fonction d'évaluation (eval) dans MySQL.

Technique d'instructions préparées :

Comme solution de contournement, on peut utiliser des instructions préparées, bien que cette approche soit considéré comme une solution hacky. Voici comment cela peut être implémenté :

SELECT columnname from queries into @colname;
SET @table = 'mytable';
SET @s = CONCAT('SELECT ',@colname,' FROM ', @table);

PREPARE stmt FROM @s;
EXECUTE stmt;

Cette technique consiste à stocker le nom de colonne d'une table dans une variable utilisateur (@colname), à ​​concaténer une instruction SQL dynamique, à préparer l'instruction et à l'exécuter.

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