KO 한국어
버전: v2.3.0

insert

테이블에 하나 이상의 레코드를 삽입합니다.

insert($table, $values)
반환값
[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 함수를 사용할 수 있습니다. 자세한 내용은 https://medoo.in/api/raw를 참고하세요.
$database->insert("account", [
	"user_name" => "bar",
	"uid" => Medoo::raw("UUID()")
]);