3

我只是碰巧看到了以下编写参数化 SQL 查询的方法:

function select_user($uid)
{
    // what is '<<<'?  
    // I can't google any document about it
    // (or I don't know how to search symbol)

    $sqlStr = <<< SQL_STR

         SELECT * FROM user WHERE uid = ?

SQL_STR; // must put in the begin of the line
         // and it must match the word at the right hand side of '= <<<'

    // Code Igniter Database Class
    return $this->db->query($sqlStr, array($uid));
}

在这里改写我的问题:

  • 符号“ <<<”有什么作用?
  • 我的同事说' SQL_STR'必须匹配,为什么?
4

2 回答 2

3

Heredoc 用于定义字符串,通常是因为不必在整个字符串中转义引号,这与字符串文字不同。

手册

Heredoc 文本的行为就像一个双引号字符串,没有双引号。这意味着不需要对heredoc 中的引号进行转义,但仍然可以使用上面列出的转义码。变量是扩展的,但是在 heredoc 中表达复杂变量时必须像使用字符串一样小心。

$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
于 2012-11-21T11:42:11.573 回答
1

您要查找的内容称为heredoc

对于它的价值,SQL 查询与字符串分配无关:

$html = <<<HTML
    Imagine some HTML here with interspersed $variables
HTML;

当然也不限于 HTML。对于大块文本,它有很多有用的属性。也就是说,您可以以愉快的方式将变量插入其中,而不必转义单引号或双引号。(根据手册:“Heredoc 文本的行为就像一个双引号字符串,没有双引号。”)

于 2012-11-21T11:39:56.307 回答