Medoo

开始

更新日志

Where 语句

查询

聚合

Fetch

事务

管理

原生SQL查询

Raw object

PDO object

Debug

数据库信息

Insert

向表中插入一条或多条记录。

insert($table, $values)

返回: [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()")
]);