【问题标题】:What are the differences between backtick and single quote? Can I use IF statement in a query as above?反引号和单引号有什么区别?我可以在上面的查询中使用 IF 语句吗?
【发布时间】:2011-01-08 12:38:05
【问题描述】:

codeigniter manual中写下以下内容。

$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');
...

我有来自one of CI applications的以下代码。

$this->db->select('slug, type, 
IF(`value` = "", `default`, `value`) as `value`', FALSE);

第一季度。反引号`和单引号'有什么区别?

第二季度。我可以在上面的查询中使用 IF 语句吗?

第三季度。这是什么意思?

IF(`value` = "", `default`, `value`) as `value`

【问题讨论】:

  • 在您的问题 1 中,您是指反引号而不是反斜杠吗?
  • 反引号`和单引号'。
  • 哈,我以为我认出了这个查询:-p
  • 是的,菲尔。我正在研究你的代码。你的新版本看起来很棒。我想向代码点火器大师学习。哈哈。:-)

标签: php mysql codeigniter if-statement backticks


【解决方案1】:
  1. 在 MySQL 中,反引号引用 names,而单引号创建 strings。如果你有一个名为select 的列,当使用这个没有反引号的名称时,MySQL 会抛出一个语法错误——就像在SELECT select FROM foo 中一样——因为它会将它解释为可能不会出现在那里的关键字。

    李>
  2. 此 IF 函数 可用作 SELECT 语句中的列规范。请参阅MySQL reference

  3. 如果value 是空字符串,则此函数返回来自default 列的值。否则它会返回来自value 本身的值。结果将被称为value。详情请参阅MySQL reference

【讨论】:

  • @David 谢谢。 MySQL 手册很难阅读(对我来说)。你能推荐一本好书吗?
  • @shin:虽然我从来没有发现除了开发人员参考之外需要阅读更多内容,但我发现了这个问题:stackoverflow.com/questions/1935813/…
猜你喜欢
  • 2012-03-31
  • 2018-04-05
  • 1970-01-01
  • 2017-05-14
  • 2010-12-31
  • 2010-10-30
  • 2023-02-07
相关资源
最近更新 更多