【发布时间】:2019-12-09 05:42:34
【问题描述】:
我有以下程序-
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 语法错误。 '。
在网上看,我发现? 是一个仅用于单个变量的占位符,因此我们不能将它用于列表。即使我创建了多个? 变量,例如“?,?,?”并将其附加到 mysql 查询。我应该如何在“EXECUTE STATEMENT USING”语句中使用 @groupList 变量?
我正在调用如下程序-
CALL testInjection('(6598924, 6598928)')
【问题讨论】:
标签: mysql sql stored-procedures