Maison >base de données >tutoriel mysql >Comment exécuter des requêtes SQL avec des noms de tables dynamiques dans MySQL ?

Comment exécuter des requêtes SQL avec des noms de tables dynamiques dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-09 10:56:02447parcourir

How to Execute SQL Queries with Dynamic Table Names in MySQL?

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!

Déclaration:
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