2

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();
4

1 に答える 1

2

PDO タグ wikiから:

bindValue() または bindParam() が必要かどうかわからない場合は、前者を使用してください。bindValue() はあいまいさが少なく、副作用が少ないです。

于 2013-03-31T19:14:28.017 に答える