Sau khi tạo cơ sở dữ liệu MySQL, bước tiếp theo là tạo các bảng để lưu trữ dữ liệu. PHP cung cấp các cách để tạo bảng trong MySQL thông qua việc thực hiện các truy vấn SQL với các công cụ như mysqli hoặc PDO.
Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo bảng trong MySQL bằng PHP, sử dụng cả hai phương pháp phổ biến: mysqli và PDO.
1. Tạo bảng MySQL bằng mysqli
a) Sử dụng hướng đối tượng (OOP)
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";
// Tạo kết nối
$conn = new mysqli($servername, $username, $password, $dbname);
// Kiểm tra kết nối
if ($conn->connect_error) {
die("Kết nối thất bại: " . $conn->connect_error);
}
// Tạo bảng
$sql = "CREATE TABLE Users (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
echo "Bảng Users đã được tạo thành công";
} else {
echo "Lỗi khi tạo bảng: " . $conn->error;
}
// Đóng kết nối
$conn->close();
?>b) Sử dụng hướng thủ tục
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";
// 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());
}
// Tạo bảng
$sql = "CREATE TABLE Users (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if (mysqli_query($conn, $sql)) {
echo "Bảng Users đã được tạo thành công";
} else {
echo "Lỗi khi tạo bảng: " . mysqli_error($conn);
}
// Đóng kết nối
mysqli_close($conn);
?>Giải thích:
id: Cộtidlà khóa chính (PRIMARY KEY) và tự động tăng (AUTO_INCREMENT), giúp đảm bảo mỗi bản ghi có một giá trị duy nhất.username: Lưu tên người dùng với độ dài tối đa 30 ký tự và không được để trống (NOT NULL).email: Lưu email với độ dài tối đa 50 ký tự, có thể để trống.reg_date: Lưu ngày giờ đăng ký và tự động cập nhật khi bản ghi được chỉnh sửa, nhờ vàoTIMESTAMPvới thuộc tínhDEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.
2. Tạo bảng MySQL bằng PDO
Sử dụng PDO để tạo bảng trong MySQL cũng khá đơn giản và tương tự như mysqli, nhưng PDO cung cấp một cách tiếp cận nhất quán với nhiều loại cơ sở dữ liệu khác nhau.
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";
try {
// Tạo kết nối PDO
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// Cài đặt chế độ lỗi PDO
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Tạo bảng
$sql = "CREATE TABLE Users (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
// Thực hiện truy vấn
$conn->exec($sql);
echo "Bảng Users đã được tạo thành công";
} catch(PDOException $e) {
echo "Lỗi khi tạo bảng: " . $e->getMessage();
}
// Đóng kết nối
$conn = null;
?>Giải thích:
- Trong PDO, phương thức
exec()được sử dụng để thực hiện các truy vấn SQL không trả về kết quả, chẳng hạn như câu lệnhCREATE TABLE. - Tất cả các lỗi đều được xử lý trong khối
try-catch, và nếu có lỗi xảy ra, ngoại lệ sẽ được bắt và thông báo lỗi sẽ được hiển thị.
3. Kiểm tra bảng đã tạo
Sau khi tạo bảng thành công, bạn có thể kiểm tra cấu trúc bảng và các bảng hiện có trong cơ sở dữ liệu bằng cách sử dụng các truy vấn SQL sau trực tiếp trong MySQL:
SHOW TABLES;Lệnh này sẽ hiển thị danh sách tất cả các bảng trong cơ sở dữ liệu.
Để kiểm tra cấu trúc bảng Users, bạn có thể sử dụng lệnh:
DESCRIBE Users;Lệnh này sẽ hiển thị chi tiết về các cột trong bảng Users, bao gồm tên cột, kiểu dữ liệu, và các thuộc tính như PRIMARY KEY, AUTO_INCREMENT, NOT NULL, v.v.
4. Tạo bảng với kiểm tra IF NOT EXISTS
Để tránh việc tạo bảng khi nó đã tồn tại, bạn có thể sử dụng tùy chọn IF NOT EXISTS trong câu lệnh SQL CREATE TABLE.
Ví dụ:
CREATE TABLE IF NOT EXISTS Users (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);Câu lệnh trên sẽ chỉ tạo bảng Users nếu bảng chưa tồn tại trong cơ sở dữ liệu, giúp tránh lỗi khi cố gắng tạo lại bảng đã có.
PHP sử dụng IF NOT EXISTS:
$sql = "CREATE TABLE IF NOT EXISTS Users (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";5. Xử lý lỗi khi tạo bảng
Khi làm việc với cơ sở dữ liệu, luôn có khả năng xảy ra lỗi như:
- Lỗi kết nối: Khi không thể kết nối với cơ sở dữ liệu.
- Lỗi cú pháp SQL: Khi truy vấn SQL có lỗi cú pháp.
- Bảng đã tồn tại: Khi bạn cố gắng tạo bảng mà bảng đã tồn tại trước đó.
Sử dụng các biện pháp xử lý lỗi phù hợp như kiểm tra kết nối hoặc sử dụng khối try-catch trong PDO sẽ giúp ứng dụng của bạn an toàn và dễ bảo trì hơn.
6. Kết luận
Trong PHP, việc tạo bảng trong MySQL rất đơn giản và dễ hiểu với sự trợ giúp của mysqli và PDO. Cả hai phương pháp đều cung cấp cách tiếp cận linh hoạt và mạnh mẽ để thực hiện các truy vấn SQL, như tạo bảng và xử lý dữ liệu.
mysqli: Phù hợp cho các dự án chỉ sử dụng MySQL và cung cấp hai cách tiếp cận: hướng thủ tục và hướng đối tượng.PDO: Cung cấp khả năng tương thích với nhiều hệ quản trị cơ sở dữ liệu và chỉ hỗ trợ mô hình lập trình hướng đối tượng.
Hãy lựa chọn phương pháp phù hợp với nhu cầu của bạn và tiếp tục phát triển các ứng dụng web mạnh mẽ kết hợp với cơ sở dữ liệu MySQL!









