文章

PHP - MySQL 基礎連接


課程簡介

PHP 與 MySQL 是構建動態網站最常見的組合之一。本課程將介紹如何使用 PHP 與 MySQL 建立基礎連接,執行資料庫操作(新增、讀取、更新與刪除),並確保連接的安全性。


環境需求

  1. Web 伺服器:Apache 或 Nginx。
  2. PHP:安裝 PHP 並啟用 MySQL 擴展(如 mysqliPDO)。
  3. MySQL:確保資料庫伺服器正在運行。

MySQL 資料庫準備

建立範例資料庫

執行以下 SQL 指令:

1
2
3
4
5
6
7
8
9
10
CREATE DATABASE example_db;

USE example_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

使用 mysqli 連接 MySQL

1. 建立連接

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "example_db";

$conn = new mysqli($host, $username, $password, $database);

if ($conn->connect_error) {
    die("連接失敗:" . $conn->connect_error);
}
echo "連接成功!";
?>

2. 插入資料

1
2
3
4
5
6
7
8
<?php
$sql = "INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com')";
if ($conn->query($sql) === TRUE) {
    echo "資料新增成功!";
} else {
    echo "錯誤:" . $conn->error;
}
?>

3. 讀取資料

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$sql = "SELECT * FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - Name: " . $row["username"] . " - Email: " . $row["email"] . "<br>";
    }
} else {
    echo "無資料";
}
?>

4. 更新資料

1
2
3
4
5
6
7
8
<?php
$sql = "UPDATE users SET email='updated@example.com' WHERE username='Alice'";
if ($conn->query($sql) === TRUE) {
    echo "資料更新成功!";
} else {
    echo "錯誤:" . $conn->error;
}
?>

5. 刪除資料

1
2
3
4
5
6
7
8
<?php
$sql = "DELETE FROM users WHERE username='Alice'";
if ($conn->query($sql) === TRUE) {
    echo "資料刪除成功!";
} else {
    echo "錯誤:" . $conn->error;
}
?>

6. 關閉連接

1
2
3
4
<?php
$conn->close();
echo "連接已關閉。";
?>

使用 PDO 連接 MySQL

1. 建立連接

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$dsn = "mysql:host=localhost;dbname=example_db;charset=utf8mb4";
$username = "root";
$password = "";

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "連接成功!";
} catch (PDOException $e) {
    echo "連接失敗:" . $e->getMessage();
}
?>

2. 插入資料

1
2
3
4
5
6
7
8
9
<?php
$sql = "INSERT INTO users (username, email) VALUES (:username, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
    ":username" => "Bob",
    ":email" => "bob@example.com"
]);
echo "資料新增成功!";
?>

3. 讀取資料

1
2
3
4
5
6
7
8
<?php
$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);

foreach ($stmt as $row) {
    echo "ID: " . $row["id"] . " - Name: " . $row["username"] . " - Email: " . $row["email"] . "<br>";
}
?>

4. 更新資料

1
2
3
4
5
6
7
8
9
<?php
$sql = "UPDATE users SET email = :email WHERE username = :username";
$stmt = $pdo->prepare($sql);
$stmt->execute([
    ":email" => "new_email@example.com",
    ":username" => "Bob"
]);
echo "資料更新成功!";
?>

5. 刪除資料

1
2
3
4
5
6
<?php
$sql = "DELETE FROM users WHERE username = :username";
$stmt = $pdo->prepare($sql);
$stmt->execute([":username" => "Bob"]);
echo "資料刪除成功!";
?>

教學練習

練習 1:新增與查詢

建立一個表單,使用 POST 方法接收輸入的使用者名稱與電子郵件,將資料新增到資料庫,並顯示所有使用者。


練習 2:資料更新

建立一個功能,允許使用者更新自己的電子郵件。


練習 3:資料刪除

實現按鈕功能,點擊後刪除指定使用者。


教學重點

  • 學習使用 mysqliPDO 與 MySQL 進行連接與操作。
  • 掌握資料庫基本操作(CRUD)。
  • 理解如何使用參數化查詢防止 SQL 注入攻擊。

本文章以 CC BY 4.0 授權