В руководстве codeigniter записывается следующее.
$ this-> db-> select () принимает необязательный второй параметр. Если вы установите значение FALSE, CodeIgniter не будет пытаться защитить ваши имена полей или таблиц с помощью обратных ссылок. Это полезно, если вам нужен составной оператор select.
$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4) AS amount_paid', FALSE); $query = $this->db->get('mytable'); ...
И у меня есть следующий код из одного из приложений CI .
$this->db->select('slug, type, IF(`value` = "", `default`, `value`) as `value`', FALSE);
Q1. Каковы различия между обратным ходом и одиночной цитатой?
Q2. Могу ли я использовать оператор IF в запросе, как указано выше?
Q3. Что это значит?
IF(`value` = "", `default`, `value`) as `value`
В MySQL обращаются к цитатам, а одиночные кавычки создают строки . Если у вас есть столбец с именем select
, MySQL будет вызывать синтаксическую ошибку при использовании этого имени без обратных ссылок – например, в SELECT select FROM foo
– поскольку он будет интерпретировать его как ключевое слово, которое может не произойти там.
Эта функция IF может использоваться как спецификация столбца в операторах SELECT. См. Ссылку MySQL .
Эта функция возвращает значение из столбца по default
, если value
– это пустая строка. Иначе он возвращает значение из самого value
. Результат будет называться value
. Подробнее см. В описании MySQL .