Sau khi đã kết nối thành công PHP với MySQL ở bài trước, bước tiếp theo là ghi dữ liệu vào database.
Trong thực tế, thao tác INSERT được dùng rất nhiều:
➕ Thêm bài viết
👤 Tạo tài khoản người dùng
🛒 Lưu đơn hàng
💬 Lưu bình luận
📧 Đăng ký nhận tin
🎯 Cú pháp INSERT cơ bản
INSERT INTO ten_bang (cot1, cot2)
VALUES ('gia_tri_1', 'gia_tri_2');
Ví dụ:
INSERT INTO products (name, price)
VALUES ('Bàn phím cơ', 1200000);
🏗️ Tạo bảng mẫu
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
price INT
);
Bảng gồm:
| Cột | Ý nghĩa |
|---|---|
| id | Mã tự tăng |
| name | Tên sản phẩm |
| price | Giá sản phẩm |
🔌 Kết nối MySQL
<?php
$conn = mysqli_connect(
"localhost",
"root",
"",
"phpbasic"
);
if (!$conn) {
die("Kết nối thất bại");
}
➕ INSERT dữ liệu đầu tiên
<?php
$sql = "
INSERT INTO products(name, price)
VALUES ('Chuột không dây', 350000)
";
$result = mysqli_query($conn, $sql);
if($result){
echo "Thêm dữ liệu thành công";
}else{
echo "Lỗi";
}
Kết quả:
Thêm dữ liệu thành công
🔍 Kiểm tra trong phpMyAdmin
Mở:
phpMyAdmin
→ Database phpbasic
→ products
→ Browse
Sẽ thấy:
| id | name | price |
|---|---|---|
| 1 | Chuột không dây | 350000 |
➕ Thêm nhiều bản ghi
<?php
$sql = "
INSERT INTO products(name, price)
VALUES
('Bàn phím cơ',1200000),
('Tai nghe',850000),
('Webcam',600000)
";
mysqli_query($conn, $sql);
Kết quả:
| id | name |
|---|---|
| 1 | Chuột không dây |
| 2 | Bàn phím cơ |
| 3 | Tai nghe |
| 4 | Webcam |
📝 INSERT bằng Form HTML
Form nhập liệu
<form method="post">
Tên sản phẩm:
<input type="text" name="name">
<br><br>
Giá:
<input type="number" name="price">
<br><br>
<button type="submit">
Thêm
</button>
</form>
Xử lý PHP
<?php
if($_SERVER["REQUEST_METHOD"]=="POST"){
$name = $_POST["name"];
$price = $_POST["price"];
$sql = "
INSERT INTO products(name, price)
VALUES ('$name', '$price')
";
mysqli_query($conn,$sql);
echo "Đã lưu dữ liệu";
}
Khi submit form:
Bàn phím gaming
1500000
Dữ liệu sẽ được ghi xuống MySQL.
⚠️ Nguy cơ SQL Injection
Đoạn code sau KHÔNG an toàn:
$name = $_POST["name"];
$sql = "
INSERT INTO products(name)
VALUES ('$name')
";
Kẻ xấu có thể chèn mã SQL độc hại.
Ví dụ:
abc'); DROP TABLE products; --
Có thể gây lỗi hoặc phá dữ liệu.
🛡️ Giải pháp: Prepared Statement
Đây là cách hiện đại và an toàn.
<?php
$stmt = mysqli_prepare(
$conn,
"INSERT INTO products(name, price)
VALUES (?, ?)"
);
$name = "Chuột Gaming";
$price = 450000;
mysqli_stmt_bind_param(
$stmt,
"si",
$name,
$price
);
mysqli_stmt_execute($stmt);
echo "Đã thêm dữ liệu";
Trong đó:
s = string
i = integer
d = double
b = blob
🔍 Lấy ID vừa được thêm
mysqli_query($conn,$sql);
echo mysqli_insert_id($conn);
Ví dụ:
ID mới tạo: 15
Rất hữu ích khi:
📄 Tạo bài viết
🛒 Tạo đơn hàng
👤 Tạo tài khoản
🎯 Ví dụ hoàn chỉnh
<?php
$conn = mysqli_connect(
"localhost",
"root",
"",
"phpbasic"
);
if($_SERVER["REQUEST_METHOD"]=="POST"){
$name = $_POST["name"];
$price = $_POST["price"];
$stmt = mysqli_prepare(
$conn,
"INSERT INTO products(name, price)
VALUES (?, ?)"
);
mysqli_stmt_bind_param(
$stmt,
"si",
$name,
$price
);
mysqli_stmt_execute($stmt);
echo "Lưu thành công";
}
?>
<form method="post">
<input
type="text"
name="name"
placeholder="Tên sản phẩm">
<br><br>
<input
type="number"
name="price"
placeholder="Giá">
<br><br>
<button type="submit">
Lưu
</button>
</form>
📌 Ghi nhớ
✅ INSERT dùng để thêm dữ liệu vào bảng
✅ mysqli_query() có thể thực hiện câu lệnh INSERT
✅ Có thể lấy ID vừa tạo bằng:
mysqli_insert_id()
✅ Nên dùng Prepared Statement để chống SQL Injection
✅ Đây là nền tảng để xây dựng CRUD hoàn chỉnh
🚀 Bài tiếp theo
👉 Bài 24 — SELECT Dữ Liệu
Bạn sẽ học:
SELECT *
SELECT theo điều kiện
WHERE
ORDER BY
LIMIT
Hiển thị dữ liệu ra HTML
x0




Không có nhận xét nào:
Đăng nhận xét