0

I keep getting the error "Parse error: syntax error, unexpected T_SL" when attempting to use the following code :

<?php 
$names = array(1 => 'example1', 2 => 'example2',    3 => 'example3', 4 => 'example4');

$code = <<<HEREDOC<div><h3>$names[$i]</h3>
    <div class="rating"><div class="id$i" id="0
        $stmt = mysqli_prepare($dbc, 'SELECT userid, rating FROM ranks WHERE userid = ? AND id =?');
            mysqli_stmt_bind_param($stmt, 'ii', $userid, $i);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_bind_result($stmt, $userid, $i, $rating);
            while (mysqli_stmt_fetch($stmt)){
                echo ($rating);
            }_$i"><script type="text/javascript">$(document).ready(function(){$(".id' . $i. '").jRating({isDisabled : false});});</script></div></div><div class="push"> 
        $query = "SELECT ROUND( AVG(rating),1 ) FROM ranks WHERE fight_id ='".$i."'");
        $result = mysqli_query($dbc, $query) or die("Error querying database.");
        while($row = mysqli_fetch_array($result)){
            echo "<h3 class='average'>" . $row["ROUND( AVG(rating),1 )"] . "/5" . "</h3>";}
        </div><br/></div><div class="line"></div>;HEREDOC;


for($i=1; $i<5; $i++)
{
    echo $code
}?>

I'm sure I'm going at it wrong, I've tried using php opening and closing tags every time it switches to JS/HTML and also tried using single quotes and got errors. Thanks for your time!

4

2 回答 2

2

heredoc 的正确样式是:

$code = <<<HEREDOC

HEREDOC;

每个符号都应该在行的开头并以换行符结尾。

更新:正如@Mike 提到的

不能在 HEREDOC 表示法中分配变量或执行 while 循环

于 2013-07-24T20:25:37.147 回答
0

首先:代码有错误。线

$query = "SELECT ROUND( AVG(rating),1 ) FROM ranks WHERE fight_id ='".$i."'");

应该

$query = "SELECT ROUND( AVG(rating),1 ) FROM ranks WHERE fight_id ='".$i."')";

第二:另一种解决方案是连接您的内容

<?php 
$names = array(1 => 'example1', 2 => 'example2',    3 => 'example3', 4 => 'example4');

$code = '<div><h3>'.$names[$i].'</h3>
    <div class="rating"><div class="id'.$i.'" id="0'.(
        $stmt = mysqli_prepare($dbc, 'SELECT userid, rating FROM ranks WHERE userid = ? AND id =?');
            mysqli_stmt_bind_param($stmt, 'ii', $userid, $i);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_bind_result($stmt, $userid, $i, $rating);
            while (mysqli_stmt_fetch($stmt)){
                echo ($rating);
            }).'_'.$i.'"><script type="text/javascript">$(document).ready(function(){$(".id' . $i. '").jRating({isDisabled : false});});</script></div></div><div class="push">'.( 
        $query = "SELECT ROUND( AVG(rating),1 ) FROM ranks WHERE fight_id ='".$i."')";
        $result = mysqli_query($dbc, $query) or die("Error querying database.");
        while($row = mysqli_fetch_array($result)){
            echo "<h3 class='average'>" . $row["ROUND( AVG(rating),1 )"] . "/5" . "</h3>";}).'
        </div><br/></div><div class="line"></div>';


for($i=1; $i<5; $i++)
{
    echo $code
}?>

建议:转换函数中的查询之类的东西(并在需要时调用这些函数),以便您的代码更清晰,更易于理解。

于 2013-07-24T21:38:07.117 回答