Использование PDO для вызова хранимых процедур с внешними параметрами
Вызов хранимых процедур с использованием PDO может быть простым процессом; однако при попытке использовать хранимые процедуры без параметров может возникнуть загадочная ошибка:
SQLSTATE[42000]: Syntax error or access violation: 1414 OUT or INOUT argument 1 for routine mydb.proc_OUT is not a variable or NEW pseudo-variable in BEFORE trigger
Решение: PDO Особенность
Углубление руководства PDO и сопутствующих обсуждений позволяет выявить аномалию в функциональности подготовленных операторов PDO. Суть проблемы заключается в обработке выходных параметров внутри хранимых процедур.
Чтобы устранить эту проблему, необходим специальный обходной путь:
$stmt = $db->prepare("CALL SomeStoredProcedure(?, ?)"); $stmt->execute(array($someInParameter1, $someInParameter2));
Альтернативный подход
Другой вариант предполагает изменение хранимой процедуры, включив в нее инструкцию SELECT, которая извлекает выходной параметр после выполнения хранимой процедуры:
CALL SomeStoredProcedure($someInParameter1, $someInParameter2, @someOutParameter); SELECT @someOutParameter;
Этот модифицированный подход имитирует поведение, наблюдаемое при прямом вызове хранимой процедуры в MySQL.
Благодаря использованию этих обходных путей загадочная ошибка, связанная с вызовом хранимых процедур без параметров с использованием PDO рассеивается, обеспечивая плавное выполнение и получение значений параметров.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3