日期:2014-05-16  浏览次数:20708 次

看看这个存储过程错哪了?
CREATE   PROCEDURE   AddTopic($fid   smallint,   $author   char(15),   $subject   char(80),   $message   mediumtext)
BEGIN
        DECLARE   $authorid   mediumint;
        SELECT   MAX(uid)   INTO   $authorid   FROM   bbs_members   WHERE   username   =   &author;   --   这句注释掉,   就不会出错,   不明白这句怎么错了?
        DECLARE   $postime   int;
        SELECT   MAX(dateline)   INTO   $postime   FROM   bbs_posts;
        IF   $postime   IS   NULL   THEN
              SET   $postime   =   0;
        END   IF;
       
        INSERT   INTO   bbs_threads   (fid,   subject,   author,   authorid,   dateline,   lastpost)   VALUES   ($fid,   $subject,   $author,   $authorid,   $postime,   $postime);
        UPDATE   bbs_forums   SET   threads   =   threads   +   1   WHERE   fid   =   $fid;
        INSERT   INTO   bbs_posts   (fid,   tid,   subject,   author,   authorid,   message,   dateline)   VALUES   ($fid,   last_insert_id(),   $subject,   $author,   $authorid,   $message,   $postime);
        UPDATE   bbs_forums   SET   posts   =   posts   +   1   WHERE   fid   =   $fid;
END;



------解决方案--------------------
SELECT MAX(uid) INTO $authorid FROM bbs_members WHERE username = $author;

对了,你的变量尽量不要前面加¥符号。
------解决方案--------------------
出错信息是什么?
------解决方案--------------------
因为你select语句下面还有定义变量呀:

DECLARE $postime int;