
MySQL peut-il exécuter une chaîne en tant que requête ?
Question :
Dans un MySQL Dans cet environnement, la tentative d'exécution d'une procédure stockée qui passe dans un varchar sous forme de requête via EXEC ou CALL s'est avérée infructueuse. Existe-t-il un équivalent MySQL à la fonction eval de JavaScript qui rendrait cela possible ?
Réponse :
Oui, la technique suivante fournit une implémentation MySQL similaire à l'eval de JavaScript :
- Définissez une variable SQL (@queryString) en utilisant CONCAT pour générer dynamiquement la chaîne de requête à partir du varchar paramètre.
- Préparez une instruction préparée (stmt) basée sur @queryString en utilisant PREPARE.
- Exécutez l'instruction préparée (stmt) en utilisant EXECUTE.
- Désalouez l'instruction préparée en utilisant DEALLOCATE PREPARE .
- Réinitialisez la variable SQL (@asd) sur NULL.
Par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 | SET @queryString = (
SELECT CONCAT( 'INSERT INTO user_group (`group_id`,`user_id`) VALUES ' , www.vals) as res FROM (
SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',' ) as vals FROM (
SELECT CONCAT( '(59,' , user_id, ')' ) as asd FROM access WHERE residency = 9
) as qwe
) as www
);
PREPARE stmt FROM @queryString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @asd = NULL;
|
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!