Medoo

开始

更新日志

Where 语句

查询

聚合

Fetch

事务

管理

原生SQL查询

Raw object

PDO object

Debug

数据库信息

Raw 对象

Medoo 提供了一种使用原始表达式的方法,用于更复杂和可定制的查询。它还支持数据占位符,以防止 SQL 注入和优化语法,而无需关心引号。

Medoo::raw($query, $map)

语法

原始 SQL 表达式为列名提供了引号快捷方式,因此您不必关心引号。您所要做的就是使用 来说明这是列名。Medoo 将处理其余部分。

Medoo::raw("AVG()")

用于列

您可以使用原始对象来 select() 列名参数。它将被别名为键名。

$data = $database->get('account', [
	'user_name',
	'score' => Medoo::raw('SUM( + )')
], [
	'user_id' => 100
]);
SELECT "user_name", SUM("age" + "experience") AS "score"
FROM "WP_account"
WHERE "user_id" > 100

用于更新和插入语句

$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 语句

$data = $database->select('account', [
	'user_name',
	'user_id',
], [
	'datetime' => Medoo::raw('NOW()'),
	'ORDER' => Medoo::raw('RAND()'),
	'LIMIT' => Medoo::raw('AVG()')
]);

使用预处理语句

如果您想为原始对象使用来自其他变量或用户发布日期的某些值,您可以使用预处理语句来防止 SQL 注入。

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

作为 Where 子句

您也可以使用原始对象作为 where 子句来构建复杂的子句。

$data = $database->select('account', [
		'user_id',
		'email'
	],
	Medoo::raw('WHERE
		LENGTH() > 5
		ORDER BY RAND()
		LIMIT 10
	')
);