с помощью этой процедурыPHP -> PDO -> Подготовка -> Вызов процедуры -> Вставить Into -> Bind Параметры
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(?,?)
возвращает ошибку.
Как я могу сделать эту работу? Вызвать процедуру с инструкцией подготовки и параметрами привязки?
Спасибо
Не ставьте параметры в кавычки. –
Я также пытаюсь VALUES (?,?), Но возвращает ошибку. – GaLaTaS
DELIMITER // DROP ПРОЦЕДУРА IF EXISTS 'Insert_New_Return_Id' CREATE PROCEDURE' Insert_New_Return_Id' (ВО Insert_Stmnt VARCHAR (1000), OUT IDNum INT) BEGIN, SET @buffer = Insert_Stmnt; PREPARE stmt FROM @buffer; EXECUTE stmt; \t SELECT LAST_INSERT_ID() В IDNum; DEALLOCATE PREPARE stmt; END // DELIMITER; – GaLaTaS