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 …
[Lire plus]