Chuyển đến nội dung
Nội dung học:
1. Tổng quan về MySQL và PHP
- MySQL là hệ quản trị cơ sở dữ liệu phổ biến, được sử dụng rộng rãi với PHP.
- PHP cung cấp các cách để kết nối và làm việc với MySQL, bao gồm:
MySQLi
(Improved MySQL): Hỗ trợ hướng thủ tục và hướng đối tượng.
PDO
(PHP Data Objects): Hỗ trợ nhiều loại cơ sở dữ liệu, bao gồm MySQL.
2. Kết nối PHP với MySQL
- Sử dụng MySQLi (Hướng thủ tục):
$servername = "localhost"; $username = "root"; $password = ""; $dbname = "hoc_php"; // Tạo kết nối $conn = mysqli_connect($servername, $username, $password, $dbname); // Kiểm tra kết nối if (!$conn) { die("Kết nối thất bại: " . mysqli_connect_error()); } echo "Kết nối thành công!";
- Sử dụng PDO:
$dsn = "mysql:host=localhost;dbname=hoc_php"; $username = "root"; $password = ""; try { $conn = new PDO($dsn, $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Kết nối thành công!"; } catch (PDOException $e) { echo "Kết nối thất bại: " . $e->getMessage(); }
3. Thực hiện các truy vấn cơ bản
- Chạy truy vấn với MySQLi:
$sql = "SELECT * FROM users"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { while ($row = mysqli_fetch_assoc($result)) { echo "ID: " . $row["id"] . " - Tên: " . $row["ten"] . "<br>"; } } else { echo "Không có kết quả."; }
- Chạy truy vấn với PDO:
$sql = "SELECT * FROM users"; $stmt = $conn->query($sql); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "ID: " . $row["id"] . " - Tên: " . $row["ten"] . "<br>"; }
4. Thêm, sửa, xóa dữ liệu
- Thêm dữ liệu:
$sql = "INSERT INTO users (ten, email) VALUES ('Nguyen Van A', 'nva@example.com')"; if (mysqli_query($conn, $sql)) { echo "Thêm thành công!"; } else { echo "Lỗi: " . mysqli_error($conn); }
- Sửa dữ liệu:
$sql = "UPDATE users SET email = 'moi@example.com' WHERE id = 1"; if (mysqli_query($conn, $sql)) { echo "Cập nhật thành công!"; } else { echo "Lỗi: " . mysqli_error($conn); }
- Xóa dữ liệu:
$sql = "DELETE FROM users WHERE id = 1"; if (mysqli_query($conn, $sql)) { echo "Xóa thành công!"; } else { echo "Lỗi: " . mysqli_error($conn); }
5. Bảo mật với SQL Injection
- Sử dụng câu truy vấn có tham số để tránh SQL Injection.
- Ví dụ với PDO:
$sql = "SELECT * FROM users WHERE email = :email"; $stmt = $conn->prepare($sql); $stmt->bindParam(':email', $email); $email = 'nva@example.com'; $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "ID: " . $row["id"] . " - Tên: " . $row["ten"] . "<br>"; }
6. Đóng kết nối
- Với MySQLi:
mysqli_close($conn);
- Với PDO:
$conn = null;
Bài tập thực hành:
- Bài tập 1: Tạo kết nối tới cơ sở dữ liệu MySQL và hiển thị danh sách người dùng từ bảng
users
.
- Bài tập 2: Viết chương trình thêm mới một người dùng vào bảng
users
qua form HTML.
- Bài tập 3: Xây dựng chương trình cập nhật thông tin người dùng với ID cụ thể.
- Bài tập 4: Tạo chức năng xóa một người dùng từ bảng
users
thông qua form HTML.
- Bài tập 5: Xây dựng chức năng tìm kiếm người dùng theo email với truy vấn có tham số (Prepared Statement).
Lưu ý quan trọng:
- Luôn kiểm tra và làm sạch dữ liệu đầu vào trước khi chạy truy vấn.
- Sử dụng Prepared Statement để bảo mật ứng dụng khỏi SQL Injection.
- Đảm bảo đóng kết nối sau khi sử dụng để tiết kiệm tài nguyên.