版本: v2.3.0
insert
向資料表插入一筆或多筆記錄。
insert($table, $values)
table [string]
資料表名稱。
values [array]
要插入的資料。
回傳值
[PDOStatement] 已執行查詢的 PDOStatement 實例。
$database->insert("account", [
"user_name" => "foo",
"email" => "foo@bar.com",
"age" => 25
]);
最後插入 ID
若要取得剛插入資料列的 ID,請在
insert() 之後呼叫 id()。$database->insert("account", [
"user_name" => "foo",
"email" => "foo@bar.com",
"age" => 25
]);
$account_id = $database->id();
對於 Oracle,可將主鍵作為
insert() 的第三個參數傳入。$database->insert("ACCOUNT", [
"NAME" => "foo"
], "ID");
$account_id = $database->id();
陣列序列化
預設情況下,陣列值在插入前會使用
serialize() 進行序列化。您也可以使用 [JSON] 將它們改為以 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"]\'
]);
型別自動辨識
Medoo 會在插入前自動偵測並綁定資料型別,讓寫入更安全也更有效率。
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", [
// 字串值。
"user_name" => "foo",
// 整數值。
"age" => 25,
// 布林值。
"is_locked" => true,
// 陣列值。
"lang" => ["en", "fr", "jp", "cn"],
// 編碼為 JSON 的陣列值。
"lang [JSON]" => ["en", "fr", "jp", "cn"],
// 物件值。
"object_data" => $object_data,
// 大型物件(LOB)。
"image" => $fp
]);
多次插入
您也可以在一次呼叫中插入多行。
$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() 會回傳 PDOStatement 物件,因此您也可以呼叫 PDOStatement 的方法來取得更多資訊。$data = $database->insert("account", [
"user_name" => "foo",
"email" => "foo@bar.com",
"age" => 25
]);
// 回傳上一個 SQL 敘述影響的資料列數。
echo $data->rowCount();
// 參考:https://php.net/manual/en/class.pdostatement.php
使用 SQL 函式
您可以透過
raw() 物件使用 SQL 函式,以應付更進階的用法。更多說明請參閱 raw 頁面。$database->insert("account", [
"user_name" => "bar",
"uid" => Medoo::raw("UUID()")
]);