Maison > base de données > tutoriel mysql > 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
Libérer: 2024-11-19 08:23:02
original
940 Les gens l'ont consulté

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

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

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 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