相关疑难解决方法(0)

使用PDO使用Out参数调用存储过程

我现在一直在使用PDO并且正在重构一个项目,以便它使用存储过程而不是内联SQL.我收到一个我无法解释的错误.我正在使用PHP版本5.3.5和MySQL版本5.0.7.

我只是想让一个基本的存储过程与输出工作.这是存储过程:

DELIMITER //  
CREATE PROCEDURE `proc_OUT` (OUT var1 VARCHAR(100))  
BEGIN  
    SET var1 = 'This is a test';  
END //  
Run Code Online (Sandbox Code Playgroud)

这是我用来调用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;
Run Code Online (Sandbox Code Playgroud)

简单吧?但是,它会导致以下错误:

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
Run Code Online (Sandbox Code Playgroud)

如果我像这样直接调用proc:

CALL proc_OUT(@res);
SELECT @res;
Run Code Online (Sandbox Code Playgroud)

它按预期工作,这让我相信它是如何用PHP调用的,但我似乎无法找到问题所在.我按照手册中的说明操作,但仍然收到此错误.有谁能建议我做错了什么?任何建议将非常感谢.非常感谢!

php mysql pdo stored-procedures prepared-statement

12
推荐指数
3
解决办法
2万
查看次数

标签 统计

mysql ×1

pdo ×1

php ×1

prepared-statement ×1

stored-procedures ×1