버전: v2.3.0
query
임의의 SQL 쿼리를 직접 실행합니다.
query($query, $map)
query [string]
실행할 SQL 쿼리입니다.
map [array] (선택 사항)
프리페어드 스테이트먼트에 바인딩할 입력값입니다.
반환값
[PDOStatement] 실행된 쿼리에 대한 PDOStatement 인스턴스입니다.
Medoo는 SQL-92 문법으로 쿼리를 생성합니다. Raw SQL을 직접 작성할 때는 값을 올바르게 인용해야 하며, SQL 인젝션 위험을 줄이려면 가능하면 프리페어드 스테이트먼트를 사용하세요.
$database->query("CREATE TABLE account_storage (
c1 INT STORAGE DISK,
c2 INT STORAGE MEMORY
) ENGINE NDB;");
$data = $database->query("SELECT email FROM account")->fetchAll();
print_r($data);
식별자 인용 구문
직접 작성한 SQL에서도 테이블명과 컬럼명을 간단히 감싸는 식별자 인용 구문과 테이블 프리픽스 처리를 사용할 수 있습니다.
<name>으로 식별자를 표시하면 Medoo가 설정된 프리픽스를 포함해 올바르게 인용된 테이블명 또는 컬럼명으로 바꿔 줍니다.$data = $database->query("SELECT <email> FROM <account>")->fetchAll();
// 변환된 SQL:
// SELECT "email" FROM "account"
// 테이블 프리픽스가 설정되어 있으면 쿼리는 다음과 같이 바뀝니다:
$database = new Medoo([
// ...
"prefix" => "WP_"
]);
$data = $database->query("SELECT <account.email>,<account.nickname>
FROM <account>
WHERE <id> != 100
")->fetchAll();
SELECT "WP_account"."email", "WP_account"."nickname" FROM "WP_account" WHERE "id" != 100
프리페어드 스테이트먼트
query()는 프리페어드 스테이트먼트도 지원합니다. Medoo는 바인딩하는 값에 맞춰 매개변수 타입을 자동으로 감지합니다.$data = $database->query( "SELECT * FROM <account> WHERE <user_name> = :user_name AND <age> = :age", [ ":user_name" => "John Smith", ":age" => 20 ] )->fetchAll(); print_r($data);