VI Tiếng Việt
Phiên bản: v2.3.0

insert

Chèn một hoặc nhiều bản ghi vào một bảng.

insert($table, $values)
Giá trị trả về
[PDOStatement] Đối tượng PDOStatement của truy vấn đã thực thi.
$database->insert("account", [
	"user_name" => "foo",
	"email" => "foo@bar.com",
	"age" => 25
]);

ID chèn cuối cùng

Để lấy ID của hàng vừa được chèn, hãy gọi id() sau insert().
$database->insert("account", [
	"user_name" => "foo",
	"email" => "foo@bar.com",
	"age" => 25
]);

$account_id = $database->id();
Đối với Oracle, hãy cung cấp khóa chính làm tham số thứ ba của insert().
$database->insert("ACCOUNT", [
	"NAME" => "foo"
], "ID");

$account_id = $database->id();

Tuần tự hóa mảng

Theo mặc định, các giá trị mảng sẽ được tuần tự hóa bằng serialize() trước khi chèn. Thay vào đó, bạn có thể dùng [JSON] để lưu chúng bằng json_encode().
$database->insert("account", [
	"user_name" => "foo",
	"email" => "foo@bar.com",
	"age" => 25,
	"lang" => ["en", "fr", "jp", "cn"] // => \'a:4:{i:0;s:2:"en";i:1;s:2:"fr";i:2;s:2:"jp";i:3;s:2:"cn";}\'
]);

$database->insert("account", [
	"user_name" => "foo",
	"email" => "foo@bar.com",
	"age" => 25,
	"lang [JSON]" => ["en", "fr", "jp", "cn"] // => \'["en","fr","jp","cn"]\'
]);

Tự động nhận diện kiểu dữ liệu

Medoo tự động nhận diện và bind kiểu dữ liệu trước khi chèn để việc ghi dữ liệu an toàn và hiệu quả hơn.
class Foo {
	var $bar = "cat";

	public function __wakeup()
	{
		$this->bar = "dog";
	}
}

$object_data = new Foo();

$fp = fopen($_FILES[ "file" ][ "tmp_name" ], "rb");

$database->insert("account", [
	// Giá trị chuỗi.
	"user_name" => "foo",

	// Giá trị số nguyên.
	"age" => 25,

	// Giá trị boolean.
	"is_locked" => true,

	// Giá trị mảng.
	"lang" => ["en", "fr", "jp", "cn"],

	// Giá trị mảng được mã hóa dưới dạng JSON.
	"lang [JSON]" => ["en", "fr", "jp", "cn"],

	// Giá trị đối tượng.
	"object_data" => $object_data,

	// Đối tượng lớn (LOB).
	"image" => $fp
]);

Chèn nhiều bản ghi

Bạn cũng có thể chèn nhiều hàng chỉ trong một lần gọi.
$database->insert("account", [
	[
		"user_name" => "foo",
		"email" => "foo@bar.com",
		"age" => 25,
		"city" => "New York",
		"lang [JSON]" => ["en", "fr", "jp", "cn"]
	],
	[
		"user_name" => "bar",
		"email" => "bar@foo.com",
		"age" => 14,
		"city" => "Hong Kong",
		"lang [JSON]" => ["en", "jp", "cn"]
	]
]);

PDOStatement

insert() trả về một đối tượng PDOStatement, vì vậy bạn có thể gọi các phương thức của PDOStatement để lấy thêm thông tin.
$data = $database->insert("account", [
	"user_name" => "foo",
	"email" => "foo@bar.com",
	"age" => 25
]);

// Trả về số hàng bị ảnh hưởng bởi câu lệnh SQL gần nhất.
echo $data->rowCount();

// Tham khảo: https://php.net/manual/en/class.pdostatement.php

Sử dụng hàm SQL

Trong các trường hợp nâng cao, bạn có thể dùng các hàm SQL thông qua đối tượng Raw. Xem thêm tại https://medoo.in/api/raw.
$database->insert("account", [
	"user_name" => "bar",
	"uid" => Medoo::raw("UUID()")
]);