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