Код: Выделить всё
= Equal
Not Equal
> Greater Than
< Less Than
>= Greater Than Or Equal
5
WHERE column IS NULL
WHERE column IN (1, 2, 3)
WHERE column NOT IN (1, 2, 3)
WHERE column IN (SELECT column FROM t2)
WHERE column IN (SELECT c3 FROM t2 WHERE c2 = table.column + 10)
WHERE column BETWEEN 32 AND 34
WHERE column BETWEEN (SELECT c3 FROM t2 WHERE c2 = table.column + 10) AND 100
WHERE EXISTS (SELECT column FROM t2 WHERE c2 > table.column)
Код: Выделить всё
$this->db->where(array('session_id' => '?', 'username' => '?'));
$this->db->fetch(array($id, $username));
// vs with is_int($key)
$this->db->where(array('session_id', 'username'));
$this->db->fetch(array($id, $username));
// vs with is_string($where)
$this->db->where('session_id', '?');
$this->db->where('username');
$this->db->fetch(array($id, $username));
// vs with is_array($value)
$this->db->where('session_id', '?');
$this->db->where('username', array('Sam', 'Bob'));
$this->db->fetch(array($id));
< /code>
Вот окончательный формат, который у меня есть до сих пор. Он должен обрабатывать группировку (...) и (...) Код: Выделить всё
function where($column, $op = '=', $value = '?', $group = FALSE){}
// Single line
$this->db->where('column > 5');
$this->db->where('column IS NULL');
// Column + condition
$this->db->where('column', '=');
// WHERE column = ? (prepared statement)
$this->db->where('column', '');
// WHERE column ? (prepared statement)
// Column + condition + values
$this->db->where('column', '=', 5);
// // WHERE column = 5
$this->db->where('column', 'IN', '(SELECT column FROM t2)');
// WHERE column IN (SELECT column FROM t2)
$this->db->where('column', 'IN', array(1,2,3));
// WHERE column IN (1, 2, 3)
$this->db->where('column', 'NOT IN', array(1,2,3));
// WHERE column NOT IN (1, 2, 3)
// column + condition + values + group
$this->db->where(
array(
array('column', '', 10)
),
NULL,
NULL,
$group = TRUE
);
// WHERE (column < 20 AND column > 10)
В ходе моего вопроса я понял, что, где и наличие условий становятся все более сложными, чем глубже вы идете. Попытка абстрагировать даже 80% функций приведет к огромной библиотеке только для того, где и иметь. Как отмечает Билл, это просто не разумно для языка сценариев, такого как Php. Пока вы используете « вокруг своих столбцов, вы можете использовать то же самое, где запрос в постгре, SQLite и MySQL, поскольку они используют почти один и тот же синтаксис SQL. (Для MySQL вы должны str_replace () с тика>
Подробнее здесь: https://stackoverflow.com/questions/192 ... ry-builder