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

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