请给一个PDO传参数调用mysql存储过程并接收返回值的例子
时间: 2024-05-06 20:22:00 浏览: 90
假设我们有一个存储过程 `get_user_count`,需要传入一个参数 `age`,返回值是 `user_count`,那么可以这样调用:
```php
// 创建数据库连接
$dsn = "mysql:host=localhost;dbname=mydatabase;charset=utf8mb4";
$username = "myusername";
$password = "mypassword";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn, $username, $password, $options);
// 准备调用存储过程的语句
$sql = "CALL get_user_count(:age, @user_count)";
$stmt = $pdo->prepare($sql);
// 绑定参数
$age = 30;
$stmt->bindParam(":age", $age, PDO::PARAM_INT);
// 执行语句
$stmt->execute();
// 获取返回值
$stmt = $pdo->query("SELECT @user_count AS user_count");
$result = $stmt->fetch();
$user_count = $result["user_count"];
echo "There are $user_count users who are $age years old.";
```
注意,这里使用了 MySQL 的 user-defined variables 来存储返回值,因此需要在执行完存储过程后,再次执行一条 SQL 语句来获取返回值。
阅读全文