PHP MySQL 简介
                           
天天向上
发布: 2025-03-22 00:00:37

原创
282 人浏览过

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、博客、电商平台等。

更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *