php - 在事务中使用 PHP PDO 获取存储过程 OUT 参数的值
问题描述
我试图在插入后检索 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
我将不胜感激任何建议或更正。
谢谢你。
解决方案
推荐阅读
- list - Haskell - 尝试将字符串分解为特定字符集的字符串列表
- python-3.x - 在 gitlab graphql 中访问时间日志时出错
- javascript - 如何使我的文本截断以进行持续响应?
- kubernetes-helm - 使用 Enmasse 部署 Hono
- flutter - 如何在颤振中将提供者设置为仅一种类型的数据?
- express - 快速会话不会在重新加载时持续存在。(连接蒙戈)
- youtube-api - 使用 curl 调用的 YouTube 数据 API:请求缺少有效的 API 密钥
- scala - 如何在scala中为spark数据框添加具有重复序列号的列?
- oracle - 匿名块不在 SQL Developer 上运行,但在 Toad 上运行
- machine-learning - 如何检查python中k-means聚类的准确性?如何知道预测变量在 k-means 算法中代表什么?