2012-08-31 62 views
2

我想写这将接受受害者及其count.The victims 参数将包含类似这样'123,321,222'值的程序,我使用的是函数调用 SPLIT_STR_FUNCTION分割文本分成逗号分隔值。然后我将 将每个值插入到数据库中。MySQL的未知列变量

这里是我的方法:

CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertPost`(in pmsg text, in pthumbPath text, in ppath text, in puserid bigint, in count int, in victims text) 
BEGIN 
INSERT INTO posts(path,thumbpath,msg,userid) VALUES(ppath,pthumbpath,pmsg,puserid); 


SET @lastpostid = (SELECT postid FROM posts ORDER BY postid DESC LIMIT 1); 

SET @startindex=1; 

WHILE @startindex <= count DO 
SET @IndividualIDs=convert((select SPLIT_STR_Function(victims, ',', @startindex)),signed); 
SET @startindex=startindex+1;  
INSERT INTO victims(victimid,postid) VALUES(@IndividualIDs,@lastpostid); 

end WHILE; 
END 

错误:在字段列表 未知列的startIndex

SPLIT_STR_FUNCTION:(从here

CREATE DEFINER=`root`@`localhost` FUNCTION `SPLIT_STR_Function`(
x VARCHAR(255), 
delim VARCHAR(12), 
pos INT 
) 

RETURNS varchar(255) CHARSET latin1 
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), 
    LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), 
    delim, '') 
+0

thnx我在这个愚蠢的错误上浪费了几个小时。 :) – Mj1992

+0

我会回答。 –

回答

0

你的用户变量当你增加它时,3210缺少它的@

SET @startindex=startindex+1; 
-- Should be: 
SET @startindex = @startindex+1;