【发布时间】:2016-05-06 04:41:43
【问题描述】:
使用这个程序
CREATE PROCEDURE `Insert_New_Return_Id`(IN Insert_Stmnt varchar(1000), OUT IDNum int)
BEGIN
SET @buffer = Insert_Stmnt;
PREPARE stmt FROM @buffer;
EXECUTE stmt;
SELECT LAST_INSERT_ID() INTO IDNum;
DEALLOCATE PREPARE stmt;
END
以下代码可以正常工作:
$statement=$con->prepare("CALL Insert_New_Return_Id (\"INSERT INTO users (first_name,last_name)VALUES('test','test')\",@ID)");
$statement->execute();
$statement=$con->query("SELECT @ID");
while ($row = $statement->fetch()){echo "Last ID Insert : " . $row['@ID'];}
但是当我尝试绑定参数时,值是?
$first_name = "test";
$last_name = "test";
$statement=$con->prepare("CALL Insert_New_Return_Id (\"INSERT INTO users (first_name,last_name)VALUES('?','?')\",@ID)");
$statement->bindParam(1, $first_name, PDO::PARAM_STR);
$statement->bindParam(2, $last_name, PDO::PARAM_STR);
$statement->execute();
$statement=$con->query("SELECT @ID");
while ($row = $statement->fetch()){echo "Last ID Insert : " . $row['@ID'];}
如果我尝试VALUES(?,?) 返回错误。
我怎样才能做到这一点?调用带有prepare语句和绑定参数的过程?
谢谢
【问题讨论】:
-
不要将参数放在引号中。
-
我也尝试了 VALUES(?,?) 但返回错误。
-
DELIMITER // 如果存在则删除过程
Insert_New_Return_Id创建过程Insert_New_Return_Id(IN Insert_Stmnt varchar(1000), OUT IDNum int) BEGIN SET @buffer = Insert_Stmnt;从@buffer准备stmt;执行语句;选择 LAST_INSERT_ID() INTO IDNum; DEALLOCATE PREPARE stmt; END // 分隔符 ; -
程序正常
-
您收到什么错误?将其粘贴到您的问题中
标签: php stored-procedures pdo prepared-statement bindparam