課程簡介
PHP 與 MySQL 是構建動態網站最常見的組合之一。本課程將介紹如何使用 PHP 與 MySQL 建立基礎連接,執行資料庫操作(新增、讀取、更新與刪除),並確保連接的安全性。
環境需求
- Web 伺服器:Apache 或 Nginx。
- PHP:安裝 PHP 並啟用 MySQL 擴展(如
mysqli
或 PDO
)。 - 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:資料刪除
實現按鈕功能,點擊後刪除指定使用者。
教學重點
- 學習使用
mysqli
和 PDO
與 MySQL 進行連接與操作。 - 掌握資料庫基本操作(CRUD)。
- 理解如何使用參數化查詢防止 SQL 注入攻擊。