Trong viết này, bạn sẽ tìm hiểu cách thực hiện truy vấn SQL để thêm các bản ghi vào bảng.
Câu lệnh INSERT INTO sẽ được sử dụng để thêm các hàng mới trong bảng cơ sở dữ liệu mà chúng ta đã tạo.
Chúng ta hãy tạo một truy vấn SQL bằng cách sử dụng câu lệnh INSERT INTO với các giá trị phù hợp, sau đó chúng ta sẽ thực hiện truy vấn thêm này thông qua việc chuyển nó đến hàm mysqli_query() của PHP để thêm dữ liệu vào bảng.
Dưới đây là một ví dụ, thêm một hàng mới vào bảng customer bằng cách chỉ định các giá trị cho các trường first_name, last_name và email.
1. Thêm dữ liệu bằng cách sử dụng MySQLi
<?php
/* Kết nối máy chủ MySQL. Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "", "demo");
// Kiểm tra kết nối
if($link === false){
die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
// Thực thi câu lệnh insert
$sql = "INSERT INTO customer (first_name, last_name, email) VALUES ('Hoang', 'Quang', 'quang@mail.com')";
if(mysqli_query($link, $sql)){
echo "Thêm bản ghi thành công.";
} else{
echo "ERROR: Không thể thực thi $sql. " . mysqli_error($link);
}
// Đóng kết nối
mysqli_close($link);
?>
Chú ý: trường id được đánh dấu là AUTO_INCREMENT. Nó yêu cầu MySQL tự động gán giá trị cho trường này nếu nó không được chỉ định, bằng cách tăng giá trị trước đó lên 1.
2. Thêm nhiều dữ liệu bằng cách sử dụng MySQLi
Bạn cũng có thể thêm nhiều hàng vào một bảng CSDL MySQL với một truy vấn thêm cùng một lúc.
Để thực hiện việc này, trong câu lệnh INSERT INTO chúng ta chỉ cần thêm nhiều giá trị cùng một lúc, trong đó các giá trị của từng cột cho mỗi hàng phải được đặt trong dấu ngoặc đơn và được phân tách bằng dấu phẩy.
Hãy thêm vài hàng vào bảng customer, như ví dụ sau:
<?php
/* Kết nối máy chủ MySQL. Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "", "demo");
// Kiểm tra kết nối
if($link === false){
die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
// Thực thi câu lệnh insert
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES
('Hoang', 'Quang', 'Quang@mail.com'),
('Nguyen', 'Sinh', 'sinh@mail.com'),
('Le', 'Thuy', 'thuy@mail.com'),
('Ngo', 'Nguyen', 'nguyen@mail.com')";
if(mysqli_query($link, $sql)){
echo "Thêm bản ghi thành công.";
} else{
echo "ERROR: Không thể thực thi $sql. " . mysqli_error($link);
}
// Đóng kết nối
mysqli_close($link);
?>
Như bạn thấy, chúng ta chỉ cần thay đổi câu lệnh INSERT INTO đi một chút.
3. Thêm dữ liệu vào một bảng CSDL từ một form HTML
Trong phần trước, chúng ta đã học cách thêm dữ liệu vào cơ sở dữ liệu từ tập lệnh PHP. Bây giờ, chúng ta sẽ xem làm thế nào chúng ta có thể thêm dữ liệu vào cơ sở dữ liệu thu được từ một biểu mẫu HTML.
Thực tế, khi lập trình web, để tiện cho việc quản trị website, người quản trị sẽ chỉ làm việc trên các giao diện trực quan chứ không phải thao tác code.
Do đó, để có thể thêm dữ liệu vào bảng, người quản trị web sẽ nhập từ form HTML.
Tạo một biểu mẫu HTML có thể được sử dụng để thêm các bản ghi mới vào bảng customer.
3.1. Tạo form html: add-customer.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Form thêm khách hàng</title>
</head>
<body>
<form action="insert.php" method="post">
<p>
<label for="firstName">First Name:</label>
<input type="text" name="first_name" id="firstName">
</p>
<p>
<label for="lastName">Last Name:</label>
<input type="text" name="last_name" id="lastName">
</p>
<p>
<label for="emailAddress">Email Address:</label>
<input type="text" name="email" id="emailAddress">
</p>
<input type="submit" value="Submit">
</form>
</body>
</html>
3.2. Lấy dữ liệu từ form html và thêm dữ liệu vào bảng CSDL
Khi người dùng nhấp vào nút gửi của Form thêm bản ghi, trong ví dụ trên, dữ liệu biểu mẫu được gửi đến tệp ‘insert.php’ thông qua phương thức POST trong PHP.
Tệp ‘insert.php‘ sẽ thực hiện kết nối với máy chủ cơ sở dữ liệu MySQL. Chúng ta lấy dữ liệu của các trường bằng biến $_REQUEST của PHP và cuối cùng thực hiện truy vấn thêm để thêm các bản ghi.
Đây là mã hoàn chỉnh của tệp ‘insert.php’ của chúng ta:
<?php
/* Kết nối máy chủ MySQL. Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "", "demo");
// Kiểm tra kết nối
if($link === false){
die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
// Làm sạch dữ liệu đầu vào để đảm bảo an toàn
$first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']);
$email = mysqli_real_escape_string($link, $_REQUEST['email']);
// Thực thi câu lệnh insert
$sql = "INSERT INTO customer (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if(mysqli_query($link, $sql)){
echo "Thêm bản ghi thành công.";
} else{
echo "ERROR: Không thể thực thi $sql. " . mysqli_error($link);
}
// Close connection
mysqli_close($link);
?>
Đây là ví dụ rất cơ bản về việc thêm dữ liệu biểu mẫu vào bảng cơ sở dữ liệu MySQL. Bạn có thể mở rộng ví dụ này và làm cho nó tương tác hơn bằng cách xác thực dữ liệu người dùng trước khi thêm nó vào các bảng cơ sở dữ liệu.