MySQL过程向PHP返回不正确的值

时间:2014-07-14 21:51:50

标签: php mysql sql pdo

我有这个存储过程将数据插入到事件表中。问题是在select lastNum;中返回给PHP的值比在前一个insert语句中使用的值低1(插入为2但将返回1)。这对我没有任何意义,因为两行之间的值没有改变。

DROP PROCEDURE IF EXISTS `insertEvent`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertEvent`(ptitle varchar(500), pdescription varchar(500), pxcoord int(4), pycoord int(4), ptype char(1), pnumber int(11))
begin
 declare numExists int(1);
 declare lastNum int(9);


 select count(*) from event where `number`=pnumber;

 select insAndIncEventId() into lastNum from dual; 

 if numExists > 0 then
  update event set `number`=`number`+1 where `number`>=pnumber;
 end if;


 insert into event (id, title, description, xcoord, ycoord, `type`, `number`) values  (lastNum, ptitle, pdescription, pxcoord, pycoord, ptype, pnumber);

 select lastNum;

end$$


drop function if exists `insAndIncEventId`$$

create function `insAndIncEventId`() returns int(9)
begin
 declare event_id int(9);

 select nextId into event_id from eventid;

 update eventid set nextid=nextid+1;

 return event_id;

end$$

PHP如下:

$eventid=$eventidstmt->fetch(PDO::FETCH_BOTH);
fb("event id count from sql:".count($eventid));
fb("event id from sql:".$eventid[0]);

0 个答案:

没有答案