Question :
Peut-on récupérer dynamiquement un nom de champ dans MySQL en fonction d'un variable ?
Contexte :
Dans certains scénarios, comme lorsque vous travaillez avec des déclencheurs, il peut être nécessaire de mettre à jour dynamiquement un champ dont le nom n'est pas connu au préalable.
Exemple de code :
SET fieldname = NEW.`name`; UPDATE table SET fieldname = 1 ;
Réponse :
Dans MySQL, l'accès direct aux noms de champs à partir de variables n'est pas possible . Il existe cependant deux méthodes pour répondre à ce besoin :
1. Construction externe (si la variable est dans une application externe) :
Si le nom du champ est disponible dans une application externe, telle que PHP, vous pouvez construire l'instruction MySQL de manière dynamique.
Exemple :
$fieldName = "fieldname"; $sql = "SELECT $fieldName FROM table";
2. Déclarations préparées (pour les variables stockées dans MySQL) :
Si le nom du champ est stocké dans une table MySQL, vous pouvez utiliser des instructions préparées pour obtenir le comportement souhaité.
Exemple de code :
SELECT columnname from queries into @colname; SET @table = 'mytable'; SET @s = CONCAT('SELECT ',@colname,' FROM ', @table); PREPARE stmt FROM @s; EXECUTE stmt;
Remarque : Les instructions préparées nécessitent une gestion minutieuse de la substitution de variables et des vulnérabilités potentielles d'injection SQL.
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!