使用PHP PDO调用MySQL存储过程

时间:2013-03-31 19:11:36

标签: php mysql stored-procedures pdo

尝试掌握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 个答案:

答案 0 :(得分:2)

来自PDO tag wiki

  

如果您不知道是否需要bindValue()或bindParam(),请转到前者。 bindValue()不那么模糊,副作用较小。