Maison > Article > base de données > Comment spécifier dynamiquement les noms de tables dans les instructions SQL ?
Lors de la construction de requêtes complexes, il devient souvent nécessaire de spécifier dynamiquement des noms de table. Cependant, l’utilisation de la concaténation de texte brut peut entraîner des erreurs de syntaxe et des vulnérabilités. Cet article examine une approche alternative utilisant des instructions préparées, tout en fournissant une solution étape par étape à l'erreur spécifique que vous avez rencontrée.
Erreur rencontrée
L'erreur [ Err] 1064 - Vous avez une erreur dans votre syntaxe SQL... se produit car MySQL ne peut pas évaluer directement les noms de tables construits à l'aide de texte brut concaténation.
La solution : les instructions préparées
Les instructions préparées vous permettent de créer et d'exécuter des requêtes de manière dynamique tout en garantissant que la syntaxe SQL reste valide. Voici comment les utiliser pour résoudre votre erreur :
Définir le nom de la table dynamique :
SET @id := '47'; SET @table := concat(@id, '_2013_2014_voucher');
Construire une requête chaîne :
SET @qry1 := concat('select * from ', @table);
Préparer l'instruction :
prepare stmt from @qry1;
Exécuter déclaration :
execute stmt;
Répéter pour la requête de suppression :
SET @qry2 := concat('DELETE FROM ', @table, ' WHERE>
En utilisant des instructions préparées , vous pouvez gérer efficacement les noms de tables dynamiques et éliminer les erreurs de syntaxe associées à la concaténation de texte brut. Cette approche adhère aux meilleures pratiques en matière de bases de données et améliore la sécurité du code.
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!