[英]mysql_insert_id, does not return the last inserted id when i place it in a function
[英]my mysql procedure already does insert, I would like to return the last inserted id
我的程序mysql已经确实正确插入了:
这是我的php代码调用过程:
$sql = 'CALL insert_menu(?,?,?,?,?)';
try {
$query = $bd->prepare($sql);
$query->bindParam(1,$name, PDO::PARAM_STR);
$query->bindParam(2,$catsup, PDO::PARAM_INT);
$query->bindParam(3,$level, PDO::PARAM_INT);
$query->bindParam(4,$link, PDO::PARAM_STR);
$query->bindParam(5,$title, PDO::PARAM_STR);
$query->execute();
} catch (PDOException $e) {
echo $e->getMessage();
}
这是我的程序:
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_menu`(
IN p_cat_name VARCHAR(100),
IN p_cat_sup_cod INT,
IN p_cat_level INT,
IN p_link VARCHAR(200),
IN p_title VARCHAR(100)
)
BEGIN
IF ((p_cat_name <> '')&&(p_cat_level <> '')&&(p_link <> '')&&(p_title <> '')) THEN
INSERT INTO access (access_id,menu_descr,sup_cod,level,menu_link,menu_title)
VALUES ('',p_cat_name,p_cat_sup_cod,p_cat_level,p_link,p_title);
END IF;
END;
我想我的程序将最后插入的id返回到php ...我也不知道如何使用PDO prepare准备结果...我请大家帮忙,谢谢...
尝试这个:
SELECT LAST_INSERT_ID()
由于您使用的是PDO:
try {
$bd->prepare('SELECT LAST_INSERT_ID()');
$bd->execute();
} catch(PDOException $e) {
echo $e->getMessage();
}
但这实际上不需要准备,因此您可以使用:
try {
$results = $bd->query('SELECT LAST_INSERT_ID() as last');
$lastID = $results[0]['last'];
} catch(PDOException $e) {
echo $e->getMessage();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.