我试图在插入后检索ID的值。我正在使用2个存储过程来完成此操作。由于某种原因,我无法获取out参数的值。我不断收到一条错误消息,内容为
SQLSTATE [42S22]:找不到列:1054未知列'lkjlkjlkjlkj' 在“字段列表”中
这是我创建的方法。
function addTopicLesson(Topic $topic, Lesson $lesson)
{
$isSuccessful = false;
$this->connection->beginTransaction(); //start transaction
try{
$lessonNo = $lesson->getLessonNo();
$lessonTitle = $lesson->getLessonTitle();
$sp_addLesson = $this->connection->prepare( "CALL addLesson($lessonNo,$lessonTitle, @lessonId)");
$sp_addLesson->execute();
$sp_addLesson->closeCursor();
$lessonId =$this->connection->query("select @lessonId")->fetch(PDO::FETCH_ASSOC);
//var_dump($lessonId);
$topicId = $topic->getTopicId();
$sp_addTopicLesson = $this->connection->prepare("CALL addTopicLesson($topicId,$lessonId)");
$sp_addTopicLesson->execute();
$this->connection->commit(); //commit
$isSuccessful = true;
}catch(PDOException $e){
echo $e->getMessage();
$this->connection->rollBack();
}
return $isSuccessful;
}
还有我的存储过程,
CREATE DEFINER=`root`@`localhost` PROCEDURE `addTopicLesson`(`pTopicId` INT, `pLessonId` INT)
BEGIN
INSERT INTO topic_lesson(topic_id, lesson_id)
VALUES(pTopicId,pLessonId);
END
这是“ addLesson ”存储过程。
CREATE DEFINER=`root`@`localhost` PROCEDURE `addLesson`(`pLessonNo` INT, `pLessonTitle` VARCHAR(255), OUT opLessonId INT)
BEGIN
INSERT INTO lesson (lesson_no, lesson_title)
VALUES(pLessonNo,pLessonTitle);
SELECT LAST_INSERT_ID() INTO opLessonId;
SELECT opLessonId AS opLessonId;
END
我将不胜感激任何建议或修正。
谢谢。