Maison > base de données > tutoriel mysql > le corps du texte

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

Patricia Arquette
Libérer: 2024-11-09 10:56:02
original
389 Les gens l'ont consulté

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>
Copier après la connexion

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
Copier après la connexion

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 ;
Copier après la connexion

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>
Copier après la connexion

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