Raw 对象
Medoo 提供了一种使用原始表达式的方法,用于更复杂和可定制的查询。它还支持数据占位符,以防止 SQL 注入和优化语法,而无需关心引号。
Medoo::raw($query, $map)
-
query [string]
原始 SQL 表达式。
-
map (可选) [array]
预处理语句的输入参数值数组。
语法
原始 SQL 表达式为列名提供了引号快捷方式,因此您不必关心引号。您所要做的就是使用
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 ') );