Trong bài viết này chúng ta sẽ cùng tìm hiểu về cách để insert dữ liệu từ form vào database trong PHP. Chúng ta sẽ lấy dữ liệu từ form thông qua biến toàn cục $_GET hoặc $_POST. Trước tiên hãy xem qua câu truy vấn giúp bạn có thể insert dữ liệu từ form vào database trong PHP.
1 2 |
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...) |
Các quy tắc bạn cần nên nhớ trước khi có thể insert dữ liệu vào database trong PHP:
- Câu truy vấn trong PHP nên được đặt trong dấu nháy.
- Giá trị chuỗi trong câu truy vấn nên được đặt trong dấu nháy.
- Nếu giá trị là số hoặc NULL thì không cần đặt trong dấu nháy.
Các cột là AUTO_INCREMENT (thường sẽ là cột ID) hoặc timestamp với current_timestamp update thì có thể không cần chỉ định trong câu truy vấn. Khi câu truy vấn được thực thi Mysql sẽ tự động thêm chúng.
Cú pháp để insert dữ liệu vào database trong PHP
Đầu tiên bạn cần kết nối với cơ sở dữ liệu, sau đó viết câu truy vấn để insert dữ liệu bạn lấy từ form vào database , sau đó dùng hàm mysqli_query
để thực thi câu truy vấn.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?> |
Insert dữ liệu từ form vào database trong PHP
Đầu tiên chúng ta sẽ tạo một form nhập liệu cơ bản như sau: Ở đâu mình tạo một file là index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<!DOCTYPE html> <html> <head> <title>Insert dữ liệu vào database trong PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="" method="POST"> <table> <tr> <th>Tên bài viết:</th> <td><input type="text" name="post_name"></td> </tr> <tr> <th>Tác giả:</th> <td><input type="text" name="author"></td> </tr> </table> <button type="submit">Insert</button> </form> </body> </html> |
Và mình cũng có một bảng cơ sở dữ liệu như sau:

Như mình đã nói ở đầu bài viết, các column như ID(AUTO_INCREMENT) và created_at (current_timestamp) thì Mysql sẽ tự động thêm giá trị cho chúng khi câu truy vấn được thực thi, nên trong form mình sẽ không có field nào cho 2 cột này.
Sau khi chúng ta nhập dữ liệu vào form và nhấn button Insert. Dữ liệu sẽ được gửi đến file hiện tại do mình không khai báo gì trong thuộc tính action của form. Và mình khai báo trong form là gửi dữ liệu với phương thức POST nên chúng ta sẽ sử dụng $_POST để lấy dữ liệu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<?php $username = "username"; // Khai báo username $password = "password"; // Khai báo password $server = "localhost"; // Khai báo server $dbname = "myDb"; // Khai báo database // Kết nối database $connect = new mysqli($server, $username, $password, $dbname); //Nếu kết nối bị lỗi thì xuất báo lỗi và thoát. if ($connect->connect_error) { die("Kết nối lỗi:" . $connect->connect_error); exit(); } //Khai báo giá trị ban đầu, nếu không có thì khi chưa submit câu lệnh insert sẽ báo lỗi $name = ''; $author = ''; //Lấy giá trị POST từ form vừa submit if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST["post_name"])) { $name = $_POST['post_name']; } if (isset($_POST["author"])) { $author = $_POST['author']; } //insert dữ liệu vào database table $sql = "INSERT INTO posts (post_name, author) VALUES ('{$name}', '{$author}')"; if ($connect->query($sql) === TRUE) { echo "Thêm dữ liệu thành công"; } else { echo "Error: " . $sql . "<br>" . $connect->error; } } //Đóng database $connect->close(); ?> |
Hãy nhớ kiểm tra biến có tồn tại hay không bằng hàm isset() trước khi get nhé.
Bên trên là một ví dụ đơn giản để các bạn có thể hiểu được cách để insert dữ liệu vào database trong PHP. Thực tế các bạn cần validate dữ liệu xem có đúng định dạng hay không trước khi insert vào database nữa nhé.
Và đây là toàn bộ đoạn code xử lý:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<?php $username = "username"; // Khai báo username $password = "password"; // Khai báo password $server = "localhost"; // Khai báo server $dbname = "myDb"; // Khai báo database // Kết nối database $connect = new mysqli($server, $username, $password, $dbname); //Nếu kết nối bị lỗi thì xuất báo lỗi và thoát. if ($connect->connect_error) { die("Kết nối lỗi:" . $connect->connect_error); exit(); } //Khai báo giá trị ban đầu, nếu không có thì khi chưa submit câu lệnh insert sẽ báo lỗi $name = ''; $author = ''; //Lấy giá trị POST từ form vừa submit if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST["post_name"])) { $name = $_POST['post_name']; } if (isset($_POST["author"])) { $author = $_POST['author']; } //insert dữ liệu vào database table $sql = "INSERT INTO posts (post_name, author) VALUES ('{$name}', '{$author}')"; if ($connect->query($sql) === TRUE) { echo "Thêm dữ liệu thành công"; } else { echo "Error: " . $sql . "<br>" . $connect->error; } } //Đóng database $connect->close(); ?> <!DOCTYPE html> <html> <head> <title>Insert dữ liệu vào database trong PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="" method="POST"> <table> <tr> <th>Tên bài viết:</th> <td><input type="text" name="post_name"></td> </tr> <tr> <th>Tác giả:</th> <td><input type="text" name="author"></td> </tr> </table> <button type="submit">Insert</button> </form> </body> </html> |
Lấy ID vừa insert trong mysql
Bạn có thể dùng hàm mysqli_insert_id($connect) để lấy được ID vừa insert vào cơ sở dữ liệu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if (mysqli_query($conn, $sql)) { $last_id = mysqli_insert_id($conn); echo "New record created successfully. Last inserted ID is: " . $last_id; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?> |
Insert multi data vào database trong PHP
Thông thường chúng ta sẽ sử dụng trong trường hợp form là dynamic row như sau:

Lúc này chúng ta sẽ có nhiều dòng dữ liệu cần được insert vào cùng một bảng. Khi đó ta có thể sử dụng cách sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Mary', 'Moe', 'mary@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Julie', 'Dooley', 'julie@example.com')"; if (mysqli_multi_query($conn, $sql)) { echo "New records created successfully"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?> |
Kết luận
Trong bài viết này mình đã hướng dẫn các bạn cách để insert dữ liệu từ form vào database trong PHP. Ở bài viết sau mình sẽ hướng dẫn các bạn về cách để update dữ liệu trong PHP.