«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить выходные переменные из хранимых процедур MySQL в PHP с помощью PDO?

Как получить выходные переменные из хранимых процедур MySQL в PHP с помощью PDO?

Опубликовано 18 ноября 2024 г.
Просматривать:771

How to Retrieve Output Variables from MySQL Stored Procedures in PHP with PDO?

Извлечение выходных переменных хранимой процедуры в PHP с помощью PDO

Цель: Получить значение LAST_INSERT_ID() из хранимой процедуры MySQL и присвоить его переменная PHP.

Постановка проблемы

Несмотря на предоставленный PHP-код, использующий привязки PDO, ему не удается захватить выходную переменную LAST_INSERT_ID() из хранимой процедуры simpleProcedure.

Объяснение

Извлечение выходных переменных из хранимых процедур MySQL в PHP PDO включает в себя двухэтапный процесс:

    Выполнение хранимой процедуры и присвоение выходных переменных пользовательским переменным MySQL.
  1. Запрос пользовательских переменных MySQL для получения их значений в переменные PHP.
Решение: двухэтапный процесс

Этап 1: выполнение процедуры

$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)"); $stmt->bindValue(':name', $name, PDO::PARAM_STR); $stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT); // Обратите внимание на PDO::PARAM_INOUT $stmt->execute();
$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();
Привязывая заполнитель :returnid как INOUT, PDO не только передает переменную PHP в процедуру, но и обновляет ее значением выходной переменной.

Этап 2. Получение выходной переменной

$sql = "SELECT @returnid AS output_id"; $result = $db->query($sql)->fetch(PDO::FETCH_ASSOC); $lastInsertId = $result['output_id'];
$stmt = $db->prepare("CALL simpleProcedure(:name, @returnid)");
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':returnid', $returnid, PDO::PARAM_INT, 11, PDO::PARAM_INOUT);  // Note the PDO::PARAM_INOUT
$stmt->execute();
Запросите пользовательскую переменную MySQL @returnid, чтобы присвоить ее значение PHP-переменной $lastInsertId.

Примечание

Привязка PHP переменные параметров INOUT и OUT для процедур MySQL могут привести к ошибкам во время выполнения. Рекомендуется привязывать переменные только к параметрам IN.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3