Bài 04: Insert dữ liệu sử dụng PHP

PHP & MySQL 17/03/2017 07:00 823
Như các bạn đã biết thì Insert là một trong 4 câu lệnh quan trọng nhất của MySQL. Thì insert phần lớn được sử dụng trong backend trong hệ thống của bạn. Trong bài viết mình mình sẽ hướng dẫn các bạn sử dụng PHP để insert dữ liệu vào MySQL.

Như trong bài viết Câu lệnh Insert thêm dữ liệu trong MySQL mình đã nói để thêm mới một bản ghi(record) vào trong MySQL ta dùng câu lệnh INSERT

Câu lệnh INSERT INTO được sử dụng để thêm các bản ghi mới vào bảng MySQL.

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

Trong nội dung bài viết này chúng ta sẽ sử dụng bảng news để làm ví dụ. Trước khi sử dụng câu lênh INSERT chúng ta có một vài quy tắc, cú pháp chúng ta cần follow theo.

  • Các truy vấn SQL phải được trích dẫn trong PHP
  • Các giá trị chuỗi bên trong truy vấn SQL phải được trích dẫn
  • Giá trị số phải không được trích dẫn
  • Từ NULL không được trích dẫn

Lưu ý: Một số trường dữ liệu có thuộc tính là AUTO_INCREMENT hay kiểu dữ liệu là TIMESTAMP thì bạn không cần truyền dữ liệu cho nó. Mà MySQL sẽ tự chèn dữ liệu.

Bạn có thể chèn

  • Chèn tất cả các column: Chỉ định tất cả giá trị trong chuỗi $value
  • Chèn một số column: Chỉ định một số cột được liệt kê trong chuỗi $field tương ứng với chuỗi giá trị $value(1:1)

Sau đây là 3 cách insert dữ liệu vào trong MySQL bằng cách sử dụng hai bộ thư viện MySQLi và PDO của PHP.

Sử dụng MySQLi Object-oriented

$host = "localhost";
$username = "root";
$password = "";
$dbname = "MySQLDemo";

// Tại kết nối
$dbconn = new mysqli($host, $username, $password, $dbname);

// Kiểm tra kết nối
if ($dbconn->connect_error) {
    die("Kết nối thất bại: " . $dbconn->connect_error);
} 

$field = "title, slug, intro, content, create_at, order_no";
$value = "'Học lập trình Online', 'hoc-lap-trinh-online', 'Giới thiệu về học lập trình Online', 'Nội dung về học lập trình Online', '".time()."','1'";
$sql = "INSERT INTO News ($field) VALUES ($value)";

if ($dbconn->query($sql) === TRUE) {
    echo "Bản ghi được thêm mới thành công";
} else {
    echo "Lỗi: " . $sql . "<br>" . $dbconn->error;
}

// Ngắt kết nối
$dbconn->close();

Sử dụng MySQLi Procedural

$host = "localhost";
$username = "root";
$password = "";
$dbname = "MySQLDemo";

// Tại kết nối
$dbconn = mysqli_connect($host, $username, $password, $dbname);

// Kiểm tra kết nối
if (!$dbconn) {
	die("Kết nối thất bại: " . mysqli_connect_error());
} 

$field = "title, slug, intro, content, create_at, order_no";
$value = "'Học lập trình Online', 'hoc-lap-trinh-online', 'Giới thiệu về học lập trình Online', 'Nội dung về học lập trình Online', '".time()."','1'";
$sql = "INSERT INTO News ($field) VALUES ($value)";

if (mysqli_query($sql) === TRUE) {
	echo "Bản ghi được thêm mới thành công";
} else {
	echo "Lỗi: " . $sql . "<br>" . mysqli_error($dbconn);
}

// Ngắt kết nối
mysqli_close();

Sử dụng PDO

$host = "localhost";
$username = "root";
$password = "";
$dbName = "MySQLDemo";

try {
	// Tại kết nối
	$dbconn = new PDO("mysql:host=$host;dbname=$dbName", $username, $password);
	
	// Cấu hình exception
	$dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		
	$field = "title, slug, intro, content, create_at, order_no";
	$value = "'Học lập trình Online', 'hoc-lap-trinh-online', 'Giới thiệu về học lập trình Online', 'Nội dung về học lập trình Online', '".time()."','1'";
	$sql = "INSERT INTO News ($field) VALUES ($value)";
	
	//Thực thi
	$dbconn->exec($sql);
	echo "Bản ghi được thêm mới thành công";
}catch(PDOException $e){
    echo $sql . "<br>" . $e->getMessage();
}

// Ngắt kết nối
$dbconn==null
?>

Hàm time() trong PHP sẽ trả về một số kiểu int thời gian hệ tại của hệ thống.

Tổng kết.

Như vậy mình đã trình bày ba cách chèn dữ liệu vào MySQL sử dụng PHP. Hy vọng bài viết thực sự bổ ích với các bạn.

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.