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!