Comment effectuer une sélection dynamique de table dans MySQL
Lors de l'interrogation d'une base de données MySQL, vous pouvez rencontrer des situations dans lesquelles vous souhaitez sélectionner des données à partir d'un table dont le nom est stocké dans une variable. Cela peut être utile à des fins d’abstraction ou de programmation dynamique. Cependant, les tentatives directes d'exécution de telles requêtes en utilisant une syntaxe telle que :
SET @ID_1 = (SELECT ID FROM `slider` LIMIT 0,1); SET @Cat = (SELECT Category FROM `slider` LIMIT 0,1); select * from @Cat where ID = @ID_1
entraînent des erreurs MySQL. Pour surmonter cette limitation, une approche plus robuste est nécessaire.
Solution : Utilisation d'instructions préparées
Pour sélectionner à partir d'une table MySQL où le nom de la table est stocké dans une variable , vous pouvez utiliser des instructions préparées. Une instruction préparée vous permet de générer et d'exécuter dynamiquement des requêtes SQL en préparant d'abord la requête, puis en l'exécutant avec les valeurs réelles.
Voici comment y parvenir :
SET @s = CONCAT('select * from ', @Cat, ' where ID = ', @ID_1); PREPARE stmt1 FROM @s; EXECUTE stmt1; DEALLOCATE PREPARE stmt1;
Détail de la solution :
En utilisant des instructions préparées, vous pouvez construire et exécuter dynamiquement des requêtes SQL basées sur des noms de tables variables, garantissant ainsi une flexibilité et une exécution sans erreur.
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!