mysql - 如何在 MySQL 的“EXECUTE STATEMENT USING”语句中使用变量列表?
问题描述
我有以下程序 -
DELIMITER $$
DROP PROCEDURE IF EXISTS testInjection $$
CREATE PROCEDURE testInjection(IN groupList LONGTEXT)
BEGIN
SET @groupList = groupList;
SET @QUERY = "SELECT * FROM ben where groupid IN ? ";
PREPARE stmt FROM @QUERY;
EXECUTE stmt USING @groupList;
DEALLOCATE PREPARE stmt;
END $$
' groupList ' 是一个长变量列表。调用上述过程时,我在“where groupid in ”附近出现 MySQL 语法错误?'。
在 Internet 上查找,我发现这?
是一个仅用于单个变量的占位符,因此我们不能将其用于列表。即使我创建多个?
变量,如“?,?,?” 并将其附加到mysql
查询中。我应该如何在“ EXECUTE STATEMENT USING ”语句中使用@groupList变量?
我正在调用以下程序 -
CALL testInjection('(6598924, 6598928)')
解决方案
您能否检查以下查询...
DELIMITER $$
DROP PROCEDURE
IF EXISTS testInjection $$
CREATE PROCEDURE testInjection (IN groupList LONGTEXT)
BEGIN
SET @groupList = groupList;
SET @QUERY = "SELECT * FROM ben where groupid IN @groupList ";
PREPARE stmt
FROM @QUERY;
EXECUTE stmt USING @groupList;
DEALLOCATE PREPARE stmt;
END $$
推荐阅读
- php - array_multisort 对多字节和上升
- c# - 用于复杂查询的 MongoDB C# 数组过滤器
- shell - Bash 尝试计算出现次数?
- python-3.x - Django rest框架更新ManyToManyField
- android - PositionalDataSource 从 Parse Server 数据库中不返回任何内容
- reactjs - 如何同时运行多个 React useState?
- c - 从头开始在 C 中创建 strstr 函数,但使用修改后的字符串
- sql-server - ALTER COLUMN 数据类型为 NOT NULL 而不删除索引并手动重新创建它
- php - 如何在结帐页面上显示运输方式并在 woocommerce 中计算运费
- flutter - Flutter navigator 2.0页面从右到左和从左到右的转换不起作用