How array modifiers work in SQL
masterWhen a parameter in a query is an array, you can use specific modifiers to determine how it is compiled into the SQL statement:
| modifier | result |
|---|---|
%and | key1 = value1 AND key2 = value2 AND ... |
%or | key1 = value1 OR key2 = value2 OR ... |
%a | key1 = value1, key2 = value2, ... (assoc) |
%l %in | (val1, val2, ...) (list) |
%v | (key1, key2, ...) VALUES (value1, value2, ...) (values) |
%m | (key1, key2, ...) VALUES (v1, v2...), (v3, v4...) (multi) |
%by | key1 ASC, key2 DESC ... (ordering) |
%n | key1, key2 AS alias, ... (names) |
// Using %a for UPDATE
$database->query('UPDATE `table` SET %a', ['a' => 'hello', 'b' => true]);
// UPDATE `table` SET `a`='hello', `b`=1
// Using %and for WHERE clause
$database->query('SELECT * FROM users WHERE %and', [
'name' => $name,
'year' => $year,
]);
// SELECT * FROM users WHERE `name` = 'Jim' AND `year` = 1978
// Using %by for ORDER BY
$database->query('SELECT id FROM author ORDER BY %by', [
'id' => true, // ascending
'name' => false, // descending
]);