4

codeigniter 手册中写了以下内容。

$this->db->select() 接受可选的第二个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名。如果您需要复合选择语句,这很有用。

$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`
4

1 回答 1

14
  1. 在 MySQL 中,反引号引用名称,而单引号创建字符串。如果你有一个名为 的列select,当使用这个没有反引号的名称时,MySQL 会抛出一个语法错误——比如 in——SELECT select FROM foo因为它会将它解释为可能不会出现在那里的关键字。

  2. 此 IF函数可用作 SELECT 语句中的列规范。请参阅MySQL 参考资料

  3. 此函数返回default列中的值,如果value是空字符串。否则它会从value自身返回值。结果将被调用value。有关详细信息,请参阅MySQL 参考

于 2010-01-23T09:59:14.407 回答