在PHP中调用存储过程(Stored Procedure)通常涉及使用PDO(PHP Data Objects)或mysqli扩展来与数据库进行交互。以下是使用PDO和mysqli调用存储过程的示例。
假设你有一个名为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();
}
?>
同样假设你有一个名为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();
?>
fetchAll
或fetch_assoc
)来处理结果集。通过这些方法,你可以在PHP中轻松调用和执行数据库中的存储过程。