插件窝 干货文章 php查询存储过程

php查询存储过程

过程 存储 mysqli 调用 57    来源:    2025-03-19

在PHP中调用存储过程(Stored Procedure)通常涉及使用PDO(PHP Data Objects)或mysqli扩展来与数据库进行交互。以下是使用PDO和mysqli调用存储过程的示例。

使用PDO调用存储过程

假设你有一个名为GetUserInfo的存储过程,它接受一个用户ID作为参数并返回用户信息。

<?php
// 数据库连接信息
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';

try {
    // 创建PDO连接
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 准备调用存储过程的SQL语句
    $userId = 1; // 假设你要查询的用户ID
    $stmt = $pdo->prepare("CALL GetUserInfo(:userId)");
    $stmt->bindParam(':userId', $userId, PDO::PARAM_INT);

    // 执行存储过程
    $stmt->execute();

    // 获取结果集
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 输出结果
    print_r($result);

} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
?>

使用mysqli调用存储过程

同样假设你有一个名为GetUserInfo的存储过程。

<?php
// 数据库连接信息
$host = 'localhost';
$username = 'your_username';
$password = 'your_password';
$dbname = 'your_database';

// 创建mysqli连接
$mysqli = new mysqli($host, $username, $password, $dbname);

// 检查连接是否成功
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// 准备调用存储过程的SQL语句
$userId = 1; // 假设你要查询的用户ID
$stmt = $mysqli->prepare("CALL GetUserInfo(?)");
$stmt->bind_param('i', $userId);

// 执行存储过程
$stmt->execute();

// 获取结果集
$result = $stmt->get_result();

// 获取结果
$userInfo = $result->fetch_all(MYSQLI_ASSOC);

// 输出结果
print_r($userInfo);

// 关闭连接
$stmt->close();
$mysqli->close();
?>

注意事项

  1. 存储过程的参数:确保在调用存储过程时传递正确的参数类型和数量。
  2. 错误处理:始终检查数据库连接和查询执行过程中可能出现的错误。
  3. 结果集处理:根据存储过程的返回结果,使用适当的方法(如fetchAllfetch_assoc)来处理结果集。

通过这些方法,你可以在PHP中轻松调用和执行数据库中的存储过程。