在PHP中,我们可以使用PDO(PHP Data Objects)库来执行数据库搜索和存储过程。以下是使用PDO执行数据库搜索和存储过程的示例。
首先,创建一个名为users
的数据库表:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
接下来,我们将展示如何使用PDO执行数据库搜索。
<?php
// 数据库连接信息
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
try {
// 创建PDO连接
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 搜索关键词
$keyword = "John";
// 准备SQL语句
$stmt = $conn->prepare("SELECT * FROM users WHERE username LIKE :keyword");
$stmt->bindParam(':keyword', $keyword, PDO::PARAM_STR);
// 执行查询
$stmt->execute();
// 获取结果
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 输出结果
foreach ($results as $row) {
echo "ID: " . $row['id'] . " - Username: " . $row['username'] . " - Email: " . $row['email'] . "<br>";
}
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
// 关闭连接
$conn = null;
?>
接下来,我们将创建一个名为insert_user
的存储过程,用于向users
表中插入新用户。
DELIMITER //
CREATE PROCEDURE insert_user(IN p_username VARCHAR(255), IN p_email VARCHAR(255))
BEGIN
INSERT INTO users (username, email) VALUES (p_username, p_email);
END //
DELIMITER ;
现在,我们可以使用PDO调用存储过程来插入新用户。
<?php
// 数据库连接信息
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
try {
// 创建PDO连接
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 插入新用户
$username = "Jane";
$email = "jane@example.com";
// 准备调用存储过程
$stmt = $conn->prepare("CALL insert_user(:username, :email)");
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
// 执行存储过程
$stmt->execute();
echo "New user inserted successfully!";
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}
// 关闭连接
$conn = null;
?>
以上示例展示了如何使用PDO在PHP中执行数据库搜索和存储过程。请确保将your_username
、your_password
和your_database
替换为您的实际数据库连接信息。