首页 >数据库 >mysql教程 >MySQL 可以像 JavaScript 的 eval() 一样执行字符串作为查询吗?

MySQL 可以像 JavaScript 的 eval() 一样执行字符串作为查询吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-29 09:35:16396浏览

Can MySQL Execute a String as a Query Like JavaScript's eval()?

MySQL 可以执行字符串作为查询吗?

问题:

在 MySQL 中环境中,尝试执行通过 EXEC 或 CALL 传入 varchar 作为查询的存储过程已被证明不成功。是否有一个与 JavaScript 的 eval 函数等效的 MySQL 可以实现这一点?

答案:

是的,以下技术提供了类似于 JavaScript 的 eval 的 MySQL 实现:

  1. 使用 CONCAT 定义 SQL 变量 (@queryString) 以从 varchar 动态生成查询字符串参数。
  2. 使用 PREPARE 基于 @queryString 准备一条语句 (stmt)。
  3. 使用 EXECUTE 执行准备好的语句 (stmt)。
  4. 使用 DEALLOCATE PREPARE 取消分配准备好的语句.
  5. 将 SQL 变量 (@asd) 重置为NULL。

例如:

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;

以上是MySQL 可以像 JavaScript 的 eval() 一样执行字符串作为查询吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn