目录
连接 MySQL
在 PHP 中,可以使用 MySQLi(MySQL Improved Extension) 或 PDO(PHP Data Objects) 连接 MySQL 数据库。
1. 使用 MySQLi(面向过程)
$servername = "localhost";
$username = "root";
$password = "password";
$database = "mydb";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $database);
// 检查连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
2. 使用 MySQLi(面向对象)
$servername = "localhost";
$username = "root";
$password = "password";
$database = "mydb";
// 创建连接
$conn = new mysqli($servername, $username, $password, $database);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
3. 使用 PDO
$dsn = "mysql:host=localhost;dbname=mydb;charset=utf8mb4";
$username = "root";
$password = "password";
try {
$pdo = new PDO($dsn, $username, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
echo "连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
执行 SQL 查询
1. 使用 MySQLi(面向过程)
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
2. 使用 MySQLi(面向对象)
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
3. 使用 PDO
$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);
预处理语句(防止 SQL 注入)
1. MySQLi 预处理语句
$stmt = $conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$email = "test@example.com";
$stmt->execute();
$result = $stmt->get_result();
2. PDO 预处理语句
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute(['email' => 'test@example.com']);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
获取查询结果
1. MySQLi 获取数据(面向过程)
while ($row = mysqli_fetch_assoc($result)) {
echo $row["name"] . "<br>";
}
2. MySQLi 获取数据(面向对象)
while ($row = $result->fetch_assoc()) {
echo $row["name"] . "<br>";
}
3. PDO 获取数据
foreach ($result as $row) {
echo $row["name"] . "<br>";
}
插入数据
1. MySQLi 插入数据(面向过程)
$sql = "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')";
mysqli_query($conn, $sql);
2. MySQLi 插入数据(面向对象)
$sql = "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')";
$conn->query($sql);
3. PDO 插入数据
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['name' => 'Alice', 'email' => 'alice@example.com']);
更新数据
1. MySQLi 更新数据
$sql = "UPDATE users SET email='new@example.com' WHERE name='Alice'";
$conn->query($sql);
2. PDO 更新数据
$sql = "UPDATE users SET email=:email WHERE name=:name";
$stmt = $pdo->prepare($sql);
$stmt->execute(['email' => 'new@example.com', 'name' => 'Alice']);
删除数据
1. MySQLi 删除数据
$sql = "DELETE FROM users WHERE name='Alice'";
$conn->query($sql);
2. PDO 删除数据
$sql = "DELETE FROM users WHERE name=:name";
$stmt = $pdo->prepare($sql);
$stmt->execute(['name' => 'Alice']);
关闭数据库连接
1. MySQLi 关闭连接
$conn->close();
2. PDO 关闭连接
$pdo = null;
错误处理
1. MySQLi 错误处理(面向对象)
$sql = "INVALID SQL";
if (!$conn->query($sql)) {
echo "错误: " . $conn->error;
}
2. PDO 错误处理
try {
$sql = "INVALID SQL";
$pdo->exec($sql);
} catch (PDOException $e) {
echo "SQL 错误: " . $e->getMessage();
}
参考资料
这篇教程涵盖了 PHP 连接 MySQL 的基本操作,你是否需要更高级的 MySQL-PHP 操作,比如事务处理、存储过程调用等?
发表回复