引言

PHP与MySQL数据库的结合是构建动态网站的基础。在本攻略中,我们将详细介绍如何使用PHP连接到MySQL数据库,包括连接方法、数据操作以及一些实用的安全措施。

一、环境准备

在开始之前,请确保您的环境中已安装以下组件:

  • PHP环境
  • MySQL数据库
  • Web服务器(如Apache或Nginx)

二、PHP连接MySQL的方法

1. 使用MySQLi扩展

启用MySQLi扩展

确保您的PHP环境中已启用MySQLi扩展。您可以在php.ini文件中查找以下行并去掉前面的分号:

extension=mysqli

保存并重新启动您的Web服务器。

连接到MySQL数据库

以下是使用MySQLi连接到MySQL数据库的示例代码:

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "myDB";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>

2. 使用PDO扩展

启用PDO扩展

确保您的PHP环境中已启用PDO扩展。

连接到MySQL数据库

以下是使用PDO连接到MySQL数据库的示例代码:

<?php
$host = 'localhost';
$dbname = 'myDB';
$username = 'your_username';
$password = 'your_password';

try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    // 设置PDO错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "连接成功";
} catch(PDOException $e) {
    echo "连接失败: " . $e->getMessage();
}
?>

三、数据操作

1. 创建数据库和数据表

MySQLi方式

$conn->query("CREATE DATABASE myDB");
$conn->query("CREATE TABLE users (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL, password VARCHAR(30) NOT NULL)");

PDO方式

$stmt = $conn->prepare("CREATE TABLE users (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(30) NOT NULL, password VARCHAR(30) NOT NULL)");
$stmt->execute();

2. 插入数据

MySQLi方式

$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

PDO方式

$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();

3. 查询数据

MySQLi方式

$stmt = $conn->prepare("SELECT id, username, password FROM users");
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["username"]. " - Password: " . $row["password"]. "<br>";
}

PDO方式

$stmt = $conn->prepare("SELECT id, username, password FROM users");
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "id: " . $row["id"]. " - Name: " . $row["username"]. " - Password: " . $row["password"]. "<br>";
}

4. 更新数据

MySQLi方式

$stmt = $conn->prepare("UPDATE users SET username = ? WHERE id = ?");
$stmt->bind_param("si", $username, $id);
$stmt->execute();

PDO方式

$stmt = $conn->prepare("UPDATE users SET username = :username WHERE id = :id");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':id', $id);
$stmt->execute();

5. 删除数据

MySQLi方式

$stmt = $conn->prepare("DELETE FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();

PDO方式

$stmt = $conn->prepare("DELETE FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();

四、安全措施

使用预处理语句可以有效地防止SQL注入攻击。在上面的示例代码中,我们已经使用了预处理语句。

五、总结

通过本文的讲解,您应该已经掌握了使用PHP连接MySQL数据库的基本方法。在实际开发中,请务必注意安全措施,确保数据的安全性和应用的稳定性。