Actualités
Image pour le titre du contenu
Tout d'abord, un rappel : on peut générer des requêtes SQL dans MySQL, et les exécuter, un peu comme le fait eval() en PHP. Voici un exemple qui vous montre une requête SQL dynamique.

 
 
mysql> set @sql = "select 'bonjour';";
 
Query OK, 0 rows affected (1.27 sec)
 
 
 
mysql> PREPARE insertStmt FROM @sql;
 
Query OK, 0 rows affected (0.92 sec)
 
Statement prepared
 
 
 
mysql> EXECUTE insertStmt;
 
+---------+
 
| bonjour |
 
+---------+
 
| bonjour | 
 
+---------+
 
1 row in set (0.00 sec)
 


Notez bien que cette fonctionnalité peut être dévastatrice en cas d'injection SQL. Les performances ne sont pas exceptionnelles (la compilation SQL peut être assez lente), mais sera sûrement indolore pour une utilisation interactive.

La variable @sql peut être constituée de n'importe quelle source : ici c'est une chaîne littérale, mais cela peut être le contenu d'une table, une liste de table, ou autre résultat d'expression.

C'est à cela que se livre le tutoriel de SiteCrafting : comment faire pour analyser systématiquement une base de données, et repérer toutes les occurrences d'une chaîne? Dans toutes les tables d'une base, et toutes les colonnes de chaque table.

La solution se base sur le rappel ci-dessus : information_schema donne la liste des colonnes d'une base qui peut être une chaîne, et une procédure stockée se charge de produire les commandes SQL pour chercher et remplacer dans chaque cas.
< Précédent   Suivant >

Commentaires

Vous pouvez ajouter votre commentaire!


Vous devez vous connecter pour commenter