Insert
向表中插入一条或多条记录。
insert($table, $values)
-
table [string]
表名。
-
values [array]
将要插入到表中的值数据。
返回: [PDOStatement] PDOStatement 对象。
$database->insert("account", [ "user_name" => "foo", "email" => "foo@bar.com", "age" => 25 ]);
最后插入的 ID
如果要在插入后获取行 ID,您需要单独调用 lastInsertId() 并获取它。
$database->insert("account", [ "user_name" => "foo", "email" => "foo@bar.com", "age" => 25 ]); $account_id = $database->id();
对于 Oracle,您需要提供主键作为插入的最后一个参数。
$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, // 大对象 (LOBs) "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,因此您可以使用其方法获取更多信息。
$data = $database->insert("account", [ "user_name" => "foo", "email" => "foo@bar.com", "age" => 25 ]); // 返回受上一个 SQL 语句影响的行数 echo $data->rowCount(); // 更多信息: http://php.net/manual/en/class.pdostatement.php
使用 SQL 函数
您现在可以使用带有 raw 对象的 SQL 函数进行复杂使用。更多信息请访问 https://medoo.in/api/raw。
$database->insert("account", [ "user_name" => "bar", "uid" => Medoo::raw("UUID()") ]);