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

通常、文字列リテラルとは異なり、文字列全体で引用符をエスケープする必要がないため、ヒアドキュメントは文字列を定義するために使用されます。

マニュアルから:

ヒアドキュメント テキストは、二重引用符なしで、二重引用符で囲まれた文字列のように動作します。これは、ヒアドキュメント内の引用符をエスケープする必要がないことを意味しますが、上記のエスケープ コードは引き続き使用できます。変数は展開されますが、複雑な変数をヒアドキュメント内で表現する場合は、文字列と同じように注意する必要があります。

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

探しているものはヒアドキュメントと呼ばれます。

価値があるのは、SQLクエリは文字列の割り当てとは無関係です:

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

もちろんHTMLに限ったことではありません。テキストの大きなブロックに役立つプロパティがかなりあります。つまり、快適な方法で変数を補間することができ、一重引用符または二重引用符をエスケープする必要はありません。(マニュアルによると、「Heredoc テキストは、二重引用符なしで、二重引用符で囲まれた文字列のように動作します。」)

于 2012-11-21T11:39:56.307 に答える