[英]how to get LAST_INSERT_ID via stored procedure in php
說我在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 ;
桌子
-- ----------------------------
-- 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;
我可以毫無問題地從 php 調用它
$resultUsp = mysql_query($query) or die("Error: " . mysql_error());
但它只為每個成功的插入返回 1。 我想這是說 1 行受影響!
我希望它返回LAST_INSERT_ID
怎么做? 順便說一句,我不想添加任何 OUT 參數。 mysql_insert_id 返回 0
你可以在SP中獲得這樣的最后一個插入ID:
DECLARE LID int;
SET LID = LAST_INSERT_ID();
10.4.22-MariaDB
LAST_INSERT_ID() 對我不起作用,出於某種原因,通過 phpMyAdmin。 last_insert_id() 確實通過 phphMyAdmin 工作。
創建過程時定義和輸出參數:
OUT o_ProductId BIGINT UNSIGNED
然后使用全部小寫設置 out 參數。
SET o_ProductId = last_insert_id(); 選擇@o_ProductId;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.