在PHP中使用heredoc中的变量(SQL实践)

我是PHP / SQL的新手,我正在尝试在heredoc中使用一个变量,因为我需要很多文本。我只包括第一句话,足以显示问题)。

我的问题是,在heredoc中,变量(见下文:$ data [‘game_name]和$ data [‘game_owner’])不被识别为一个变量,而是作为纯文本。我该如何解决?

<?php
try
{
    //i am connecting the the database base mysql 'test'
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
    //the i read the data in the databse 'video_dame'
    $response = $bdd->query('SELECT * FROM video_game');
    //pour qu'elle soit visible à l'écran, on affiche chaque entrée une à une
    while ($data= $response->fetch())
    {
    echo <<<'EX'
    <p>Game: $data['game_name]<br/>
    the owner of the game is $data['game_owner']
    </p>
    EX;
    }
    //i end the sql request
    $response->closeCursor();
}
catch (Exception $e)
{
    die('Error: '.$e->getMessage());
}
?>

任何帮助将不胜感激。

您的Heredoc需要一些修改(因为它实际上是Nowdoc!):

    echo <<<EX
    <p>Game: {$data['game_name']}<br/>
    the owner of the game is {$data['game_owner']}
    </p>
EX;

>不能引用Heredoc标识符(与nowdoc不一致)。 ‘EX’需要成为EX。
> Heredoc终结器不能有任何前面的空格。从文档:

It is very important to note that the line with the closing identifier must contain no other characters, except possibly a semicolon (;).

你很困惑Nowdoc与Heredoc。
>字符串中的复杂数据类型必须被{}包围,以便将它们解析为变量。例如,$ data [‘game_name]应该是{$ data [‘game_name]}。

你在这里混合heredoc和nowdoc。你想使用Heredoc而不是Nowdoc,因为你的字符串中有变量。 Heredocs是“扩展”双引号字符串,而nowdoc更类似于单引号字符串,因为变量不会在nowdoc字符串中解析,而是在heredoc中。

>更多关于Heredoc here
>更多关于Nowdoc here

请仔细阅读这些文件。

翻译自:https://stackoverflow.com/questions/11274354/use-variable-within-heredoc-in-php-sql-practice

转载注明原文:在PHP中使用heredoc中的变量(SQL实践)