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)
table [string]
Tên bảng cần chèn dữ liệu.
values [array]
Dữ liệu cần chèn.
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()")
]);