将数组传递到存储过程
问题描述:
我想从php传递一个数组数组到mysql存储过程作为参数列表以及如何使用存储过程中的数组。该过程中的查询有三个IN语句,所以我想做IN(@listOfids)
其中@listOfids是1,2,3,4(来自php的内部数组)。将数组传递到存储过程
答
所以我就一种变通方法,其是连接查询和参数,以便伪代码是通过PHP例如传入
CREATE PROCEDURE `related_stories`(IN param1 VARCHAR(255), IN param2 VARCHAR(255), IN param3 VARCHAR(255), IN publishDate INT(11), IN tlimit INT(11))
BEGIN
SET @query =CONCAT('
select s.* from
(
select * from
(
SELECT something where condition IN (',param1,')
) as table1
UNION ALL
select * from
(
SELECT something where condition IN (',param2,')
) as table2
UNION ALL
select * from
(
SELECT something where condition IN (',param3,')
) as table3
) as s
WHERE (s.publish_date < ',publishDate,')
GROUP BY id limit ',tlimit,';');
PREPARE stmtInsert FROM @query;
EXECUTE stmtInsert;
END
的param1,参数2,参数3是内爆阵列(“1,2 ,3,4' )。希望这可以帮助别人
+0
@Aemem - 如果上述解决方案适用于您,请将您的答案标记为可接受的答案,这样您的问题就不会再出现在“未答复”列表中。 – Guss 2009-02-28 14:17:52
答
我想你必须把它作为csv传入。 Mysql对于循环等并不是很友好,所以你最好在外面做。至于存储过程语言去我发现Mysql真的缺乏。
您可以通过编辑您的答案发布部分代码,以便我们可以更好地理解您尝试实现的目标并从那里开展工作? – lpfavreau 2009-02-27 16:14:50