Noms de tables dynamiques dans les instructions SQL
L'exécution de requêtes SQL avec des noms de tables dynamiques peut être difficile. Prenons l'exemple suivant :
SET @id := '47'; SET @table := @id+'_2013_2014_voucher'; SELECT * FROM @table; Delete FROM @table where>
Cette requête renvoie l'erreur suivante :
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@table' at line 1
Solution utilisant des instructions préparées
L'approche recommandée pour la gestion des noms de table dynamiques consiste à utiliser des instructions préparées. Les instructions préparées vous permettent de spécifier dynamiquement le nom de la table tout en garantissant une syntaxe et une sécurité appropriées. Dans MySQL, vous pouvez utiliser les instructions PREPARE et EXECUTE comme suit :
SET @id := '47'; SET @table := concat(@id,'_2013_2014_voucher'); set @qry1:= concat('select * from ',@table); prepare stmt from @qry1 ; execute stmt ;
La fonction CONCAT() est utilisée pour concaténer dynamiquement la chaîne du nom de la table. L'instruction préparée est ensuite exécutée, évitant ainsi l'erreur de syntaxe.
Application à la requête de suppression
La même approche peut être étendue aux requêtes de suppression :
SET @qry2:= concat('DELETE FROM ',@table,' where>
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!