在事务中使用PHP PDO获取存储过程OUT参数的值

时间:2018-10-09 15:35:57

标签: php pdo

我试图在插入后检索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

我将不胜感激任何建议或修正。

谢谢。

0 个答案:

没有答案