KO 한국어
버전: v2.3.0

raw

복잡하고 유연한 쿼리를 작성할 수 있도록 Raw SQL 표현식을 생성합니다. 플레이스홀더로 SQL 인젝션 위험을 줄일 수 있고, 식별자를 인용하는 축약 구문도 지원합니다.

Medoo::raw($query, $map)

구문

Raw SQL 표현식을 사용하면 식별자 인용을 더 간결하게 작성할 수 있습니다. <name>으로 컬럼명(또는 테이블이 붙은 컬럼명)을 표시하면 Medoo가 필요한 인용 처리를 자동으로 수행합니다.
Medoo::raw("AVG(<weight>)")

컬럼 지정에서 사용하기

select()get()의 컬럼 지정에서 Raw 객체를 사용할 수 있습니다. 배열 키는 결과의 별칭이 됩니다.
$data = $database->get('account', [
	'user_name',
	'score' => Medoo::raw('SUM(<age> + <experience>)')
], [
	'user_id' => 100
]);
SELECT "user_name", SUM("age" + "experience") AS "score"
FROM "WP_account"
WHERE "user_id" = 100

UPDATE / INSERT 문에서 사용하기

Raw 객체는 insert()update()의 컬럼 값으로도 사용할 수 있습니다.
$data = $database->insert('account', [
	'user_name' => 'apple',
	'user_id' => Medoo::raw('UUID()')
]);

$data = $database->update('account', [
	'user_name' => 'apple',
	'user_id' => Medoo::raw('UUID()')
], [
	'age[>]' => 10
]);

WHERE 절에서 사용하기

Raw 객체는 더 복잡한 조건식을 작성할 때 $where 배열 안에서도 사용할 수 있습니다.
$data = $database->select('account', [
	'user_name',
	'user_id',
], [
	'datetime[>=]' => Medoo::raw('DATE_SUB(NOW(), INTERVAL 1 DAY)'),
	'ORDER' => Medoo::raw('RAND()'),
	'LIMIT' => 10
]);
SELECT "user_name", "user_id"
FROM "account"
WHERE "datetime" >= DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY RAND()
LIMIT 10

프리페어드 스테이트먼트와 함께 사용하기

Raw 표현식에 변수 값이나 사용자 입력이 포함될 때는 플레이스홀더를 사용한 프리페어드 스테이트먼트로 SQL 인젝션을 방지하세요.
$today = "2017-05-01";

$database->select('account', [
	'user_id',
	'user_name'
], [
	'datetime' => Medoo::raw('DATE_ADD(:today, INTERVAL 10 DAY)', [
		':today' => $today
	])
]);

WHERE 절 자체로 사용하기

Raw 객체를 고급 필터링을 위한 전체 WHERE 절로 사용할 수도 있습니다.
$data = $database->select('account', [
		'user_id',
		'email'
	],
	Medoo::raw('WHERE
		LENGTH(<user_name>) > 5
		ORDER BY RAND()
		LIMIT 10
	')
);
SELECT "user_id", "email"
FROM "account"
WHERE LENGTH("user_name") > 5
ORDER BY RAND()
LIMIT 10