Как справиться с сложными, где положения с помощью PHP -строителя запросовPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как справиться с сложными, где положения с помощью PHP -строителя запросов

Сообщение Anonymous »

Есть несколько библиотеков Activerecord Styleled Query Builder. Некоторые стоят одинокие, а некоторые встроены в рамки. Тем не менее, у них действительно есть проблемы с тем, где и наличие предложений, когда дело доходит до сложного SQL. Установка других баз данных - я пытаюсь придумать метод MySQL и PostgreSQL, где () метод, который мог бы исправить эти текущие падения метода. Тем не менее, я не могу решить все варианты использования , и я чувствую, что мое частичное решение небрежно. Любой, кто может ответить на что -то, что решает все эти проблемы, не только ответит на этот вопрос, но и будет отвечать за решение проблемы, которая уже несколько лет преследует реализации PHP.

Код: Выделить всё

    =   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)
Существует много общих форматов Activerecord, которые предложение Where () использует в различных библиотеках Current .

Код: Выделить всё

$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)
: update:
В ходе моего вопроса я понял, что, где и наличие условий становятся все более сложными, чем глубже вы идете. Попытка абстрагировать даже 80% функций приведет к огромной библиотеке только для того, где и иметь. Как отмечает Билл, это просто не разумно для языка сценариев, такого как Php. Пока вы используете « вокруг своих столбцов, вы можете использовать то же самое, где запрос в постгре, SQLite и MySQL, поскольку они используют почти один и тот же синтаксис SQL. (Для MySQL вы должны str_replace () с тика>

Подробнее здесь: https://stackoverflow.com/questions/192 ... ry-builder
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»