PHP MySQL 简介
1. PHP 与 MySQL 的关系
PHP(Hypertext Preprocessor)是一种广泛用于 Web 开发的服务器端脚本语言,而 MySQL 是一个开源的关系型数据库管理系统(RDBMS)。PHP 与 MySQL 的结合使开发者能够构建动态的数据库驱动型 Web 应用,如博客、CMS、电子商务网站等。
2. PHP 和 MySQL 的结合方式
PHP 通过多种方式与 MySQL 交互,主要方式包括:
- MySQLi(MySQL Improved):支持面向对象和过程化两种风格,支持预处理语句,推荐使用。
- PDO(PHP Data Objects):支持多种数据库,提供更高级的数据库访问接口。
- 老版 MySQL 扩展(已废弃):从 PHP 5.5 开始废弃,PHP 7 及更高版本不再支持。
3. PHP 连接 MySQL 数据库
3.1 使用 MySQLi 连接数据库(面向过程)
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "testdb";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $database);
// 检测连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";
?>
3.2 使用 MySQLi 连接数据库(面向对象)
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "testdb";
// 创建连接
$conn = new mysqli($servername, $username, $password, $database);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>
3.3 使用 PDO 连接数据库
<?php
$dsn = "mysql:host=localhost;dbname=testdb;charset=utf8mb4";
$username = "root";
$password = "";
try {
$pdo = new PDO($dsn, $username, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
echo "连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
?>
4. PHP 执行 MySQL 查询
4.1 MySQLi 查询(过程化)
<?php
$sql = "SELECT id, name FROM users";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
}
} else {
echo "0 结果";
}
?>
4.2 PDO 查询
<?php
$sql = "SELECT id, name FROM users";
$stmt = $pdo->query($sql);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
}
?>
5. PHP MySQL 插入数据
5.1 MySQLi 插入数据(过程化)
<?php
$sql = "INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com')";
if (mysqli_query($conn, $sql)) {
echo "数据插入成功";
} else {
echo "错误: " . mysqli_error($conn);
}
?>
5.2 PDO 插入数据
<?php
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':name' => '张三',
':email' => 'zhangsan@example.com'
]);
echo "数据插入成功";
?>
6. PHP 预处理语句(防止 SQL 注入)
6.1 MySQLi 预处理语句
<?php
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = "李四";
$email = "lisi@example.com";
mysqli_stmt_execute($stmt);
echo "数据插入成功";
?>
6.2 PDO 预处理语句
<?php
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':name' => '李四',
':email' => 'lisi@example.com'
]);
echo "数据插入成功";
?>
7. PHP MySQL 更新数据
<?php
$sql = "UPDATE users SET email = 'newemail@example.com' WHERE name = '张三'";
if (mysqli_query($conn, $sql)) {
echo "数据更新成功";
} else {
echo "错误: " . mysqli_error($conn);
}
?>
8. PHP MySQL 删除数据
<?php
$sql = "DELETE FROM users WHERE name = '李四'";
if (mysqli_query($conn, $sql)) {
echo "数据删除成功";
} else {
echo "错误: " . mysqli_error($conn);
}
?>
9. 关闭数据库连接
<?php
mysqli_close($conn); // MySQLi 关闭连接
$pdo = null; // PDO 关闭连接
?>
10. 相关链接(深入学习)
- PHP 官方文档(https://www.php.net/manual/)
- MySQL 官方文档(https://dev.mysql.com/doc/)
- PHP MySQLi 教程(https://www.w3schools.com/php/php_mysql_intro.asp)
- PHP PDO 教程(https://www.php.net/manual/en/book.pdo.php)
11. 总结
- MySQLi 适用于 MySQL 数据库,支持过程化和面向对象两种风格。
- PDO 支持多种数据库,推荐使用,尤其适合有多个数据库需求的项目。
- 预处理语句 可有效防止 SQL 注入,提高安全性。
- PHP 与 MySQL 结合后,可以轻松开发动态数据驱动的网站,如 CMS、博客、电商平台等。
更多详细内容请关注其他相关文章!