Я уже давно использую PDO и рефакторинг проекта, чтобы он использовал хранимые procs вместо встроенного SQL. Я получаю сообщение об ошибке, которое не могу объяснить. Я использую PHP версии 5.3.5 и MySQL версии 5.0.7.
Я просто пытаюсь получить базовый хранимый процесс с выходом для работы. Здесь хранится proc:
DELIMITER //
CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100))
BEGIN
SET var1 = 'This is a test';
END //
Вот код, который я использую для вызова proc, $db - это экземпляр PDO:
$stmt = $db->prepare("CALL proc_OUT(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
// call the stored procedure
$stmt->execute();
echo $returnvalue;
Простенько? Однако это приводит к следующей ошибке:
exception 'PDOException' with message '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
Если я вызову proc прямо так:
CALL proc_OUT(@res);
SELECT @res;
он работает так, как ожидалось, что заставляет меня думать, что есть проблема с тем, как его вызывают с PHP, однако я не могу найти, что проблема. Я следую инструкциям в руководстве, но я все еще получаю эту ошибку. Может ли кто-нибудь предположить, что я могу делать неправильно? Любые советы были бы очень оценены. Большое спасибо!