使用 PHP PDO 调用 MySQL 存储过程 [重复]

Posted

技术标签:

【中文标题】使用 PHP PDO 调用 MySQL 存储过程 [重复]【英文标题】:Call MySQL Stored Procedure with PHP PDO [duplicate] 【发布时间】:2013-03-21 22:26:03 【问题描述】:

试图掌握 mysql/php 中的存储过程。 SP 在 MySQL 控制台中运行良好。

但是尝试在 PHP 中调用它,我得到以下信息:

Fatal error: Cannot pass parameter 2 by reference in /home/dir/public_html/system/classes/account.class on line 92

try 
  $dsn = 'mysql:dbname=db_name;host=localhost';
  $dbh = new PDO($dsn, 'usrName', 'password');
 catch (PDOException $e) 
  echo 'Connection failed: ' . $e->getMessage();


$stmt = $dbh->prepare("CALL db_name.stprNewUser(?,@statusValue)");
//$stmt->bindParam(1, 'user@googlemail.com', PDO::PARAM_STR); // <<LINE 92 DID NOT WORK
$stmt->bindValue(1, 'user@googlemail.com', PDO::PARAM_STR); // <<LINE 92 DID WORK

$stmt->execute();

【问题讨论】:

【参考方案1】:

来自PDO tag wiki:

如果您不知道是否需要 bindValue() 或 bindParam(),请选择前者。 bindValue() 不那么模棱两可,副作用也更小。

【讨论】:

感谢 Google / php.net/manual/en/pdostatement.bindvalue.php 的帮助。

以上是关于使用 PHP PDO 调用 MySQL 存储过程 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP MySQL PDO 存储过程和 INOUT 参数

使用 PDO 调用带有 Out 参数的存储过程

PHP PDO:存储过程返回空结果

使用 php PDO 调用多个存储过程

PHP MySQL PDO 绑定输入/输出相同参数

PHP 7和MSSQL PDO:使用输入和输出参数调用存储过程