Medoo Insert的使用:插入数据

向表中插入(添加)新记录

insert 方法:insert($table, $data),接受两个参数的传入

insert($table, $data)
  • 第一个参数: $table 需要传入的参数类型为字符串:String,即为要插入数据的数据表名
  • 第二个参数: $data 需要传入的参数类型为数组:array(),即为要插入的相应字段名称与相应字段名称对应的值

返回: number 即返回插入数据的自递增id

$database = new medoo("my_database");
 
$last_user_id = $database->insert("account", array(
	"user_name" => "foo",
	"email" => "[email protected]",
	"age" => 25,
	"lang" => array("en", "fr", "jp", "cn")
));

传入一个字符串,一个数组即可,以上表字段为:user_nameemailagelang,类型均为varchar


序列化数组

值得注意的是: insert 方法会判断插入的数据,如果插入数据的值中存在数组:array,会将该值进行序列化:serialize处理。

默认情况下,你要将数组插入会被序列化serialize(), 也可以指定序列化为JSONjson_encode())。

    $last_user_id = $database->insert("account", [
    	"user_name" => "foo",
    	"email" => "[email protected]",
    	"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";}'
    ]);
 
    $last_user_id = $database->insert("account", [
    	"user_name" => "foo",
    	"email" => "[email protected]",
    	"age" => 25,
    	"(JSON)lang" => ["en", "fr", "jp", "cn"] // => '["en","fr","jp","cn"]'
    ]);

$last_user_id = $database->insert("account", array(
	array(
		"user_name" => "foo",
		"email" => "[email protected]",
		"age" => 25,
		"city" => "New York",
		"lang" => array("en", "fr", "jp", "cn")
	),
	array(
		"user_name" => "bar",
		"email" => "[email protected]",
		"age" => 14,
		"city" => "Hong Kong",
		"lang" => array("en", "jp", "cn")
	)
));

传入一个字符串,一个二维数组,即可批量插入多条数据,以上表字段相对于单条数据插入的那张表,仅仅多了一个city字段,类型也为varchar




示例演示完毕后,可能会发现一个细节:两个示例中都有$last_user_id,如果仅仅只是运行insert,实际是可以不用定义变量$last_user_id,更不用给$last_user_id赋值

这里的两个示例均没有使用user_id字段,如此时强行打印$last_user_id

print_r($last_user_id);

值得注意的是,一个insert方法如果被定义且被赋给一个变量的时候,单条数据插入的返回值为字符串, 多条数据插入的值为数组。

这里因为没有user_id字段,所以单条数据插入的值会为:0;多条数据插入的值为一个有两个键的数组,且两个键对应的值均为0。

假设按照常规理论最应该增加的字段是user_id,且自增长,那么这个地方的返回值会是:(实际这里被赋值的$last_user_id就是存储的上一步insert操作产生的ID,等于mysql_insert_id()的值)

单条:返回一个字符串显示是一个数组

多条:返回一个数组,有几条就有几个键,这里只有两条所以只有两个键,“0”和“1”,两个键的值是递增的数字。