如何通过php中的存储过程获取LAST_INSERT_ID

MD *_*AIN 4 mysql

说我在mysql中有一个存储过程,如下所示

-- ----------------------------
-- Procedure structure for usp_insert_user_basic_info
-- ----------------------------
DROP PROCEDURE IF EXISTS `usp_insert_user_basic_info`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `usp_insert_user_basic_info`(IN `user_first_name` varchar(200),IN `user_last_name` varchar(200),IN `user_password` text,IN `user_dob` date,IN `user_email` varchar(250))
BEGIN
    #Routine body goes here...
  INSERT INTO  `nuclear`.`user_basic_info` (
    `user_email` ,
    `user_password` ,
    `user_first_name` ,
    `user_last_name` ,
    `user_dob`,
    `user_creation_time`
    )
    VALUES (
      user_email,  user_password,  user_first_name,  user_last_name,  user_dob,NOW()
    );
 SELECT LAST_INSERT_ID() ;

END
;;
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

    -- ----------------------------
-- Table structure for user_basic_info
-- ----------------------------
DROP TABLE IF EXISTS `user_basic_info`;
CREATE TABLE `user_basic_info` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_email` varchar(250) DEFAULT NULL,
  `user_password` text,
  `user_first_name` varchar(200) DEFAULT NULL,
  `user_last_name` varchar(200) DEFAULT NULL,
  `user_dob` date DEFAULT NULL,
  `user_creation_time` datetime DEFAULT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `user_email` (`user_email`)
) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

我可以从PHP调用这个没有任何问题

 $resultUsp = mysql_query($query) or die("Error: " . mysql_error());
Run Code Online (Sandbox Code Playgroud)

但每次成功插入只返回1.我想这是说1排受影响!

我希望它回来 LAST_INSERT_ID

怎么做?顺便说一句,我不想​​添加任何OUT参数.mysql_insert_id返回0

Nee*_*ngh 10

你可以在SP中获得这样的最后一个插入ID:

DECLARE LID int;

SET LID = LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)