php - 使用 PHP PDO 调用 MySQL 存储过程

标签 php mysql stored-procedures pdo

<分区>

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

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

fatal error :无法在第 92 行的/home/dir/public_html/system/classes/account.class 中通过引用传递参数 2

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

最佳答案

来自 PDO tag wiki :

If you don't know if you need bindValue() or bindParam(), go for the former. bindValue() is less ambiguous and has lesser side effects.

关于php - 使用 PHP PDO 调用 MySQL 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15733403/

相关文章:

c# - 动态选择数据库

database - sybase系统程序-如何得到结果?

php - 免费的 jqGrid - 使用 PHP 的 JSON 编码示例

php - 如何在 Laravel 迁移中添加与另一列相同的默认值

php - laravel Eloquent - 不能急于加载与查询 'select' 的多态关系

java - 实现自定义注释

php - 检查字符串是否为unix时间戳

python - Flask-SQLAlchemy 左外连接过滤查询

sql - 如何将运算符连接到 where 子句中?

输出多列的 PostgreSQL 函数或存储过程?