从数据库中检索详细信息时以及使用heredoc语法时出现解析错误

时间:2014-08-04 03:38:30

标签: php html mysql while-loop heredoc

我一直在研究PHP项目,我在一个文件中收到错误,即

  

解析错误:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE),期待标识符(T_STRING)或变量(T_VARIABLE)或数字   第91行的C:\ xampp \ htdocs \ simple \ directory.php中的(T_NUM_STRING)

我的代码是:

$s = mysql_query("select * from user_reg where mid='$mid'");
$f = mysql_fetch_array($s);
<?php
    while($f = mysql_fetch_array($s))
    { echo "
    <div class='divtable'>
    <table border='0' cellspacing='10px'>
    <tr><td rowspan='4' align='center'><img src='user/$imgsrc' alt='$name' height='100px' width='100px' border='0' title=$name' /></td><th>Name</th><td><?php echo $f['name'];?></td></tr>
    <tr><th>Specialized In</th><td><?php echo $f['spl'];?></td></tr>
    <tr><th>Degrees</th><td><?php echo $f['de'];?></td></tr>
    </table>
    </div>";
    }
?>

这里我从MySql数据库中检索图像源。 我还试图通过使用heredoc语法来解决这个问题..

<?php
    while($f = mysql_fetch_array($s))
    { echo <<<abc
    <div class='divtable'>
    <table border='0' cellspacing='10px'>
    <tr><td rowspan='4' align='center'><img src='user/$imgsrc' alt='$name' height='100px' width='100px' border='0' title=$name' /></td><th>Name</th><td>$f['name']</td></tr>
    <tr><th>Specialized In</th><td>$f['spl']</td></tr>
    <tr><th>Degrees</th><td>$f['de']</td></tr>
    </table>
    </div>";
    abc;
    }
?>

但错误与上述相同.. 请帮我解决这个问题

我正在使用这个while循环来显示我的用户的详细信息,包括我网站上的照片,是否有与 相同的循环 来完成我的工作。

提前致谢...

2 个答案:

答案 0 :(得分:2)

修改

An (code) edit是通过移除abc;之前尚未获得批准的空格来完成的。

A rollback已完成,因为这可能是一个可能造成的错误。


(parse)错误是由$f['name']内的单引号引起的,而所有其他人使用$f变量从DB获取行,删除引号$f[name]并执行相同操作其他人。

另外,abc;之前的</div>";

之前和/或之后应该。看起来好像你前面有4个空格。

    </div>";
    abc;
^^^^

删除之前的所有空格,如果代码中的abc;之前确实有4个空格。

Heredoc 说:

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

  

警告   请注意,除了分号(;)之外,具有结束标识符的行必须不包含其他字符,这一点非常重要。这尤其意味着标识符可能没有缩进,并且在分号之前或之后可能没有任何空格或制表符。同样重要的是要认识到结束标识符之前的第一个字符必须是本地操作系统定义的换行符。这是在UNIX系统上的\ n,包括Mac OS X.结束分隔符后面也必须跟一个换行符。

如果此规则被破坏且结束标识符不是“干净”,则不会将其视为结束标识符,PHP将继续查找。如果在当前文件结束之前未找到正确的结束标识符,则会在最后一行产生解析错误。

Heredocs不能用于初始化类属性。从PHP 5.3开始,此限制仅对包含变量的heredoc有效。


另外,echo <<<abc之后似乎没有任何空格,但请记住,标识符后面不应该有任何空格;在您的情况下,这是abc

这样做会产生以下错误:

  

解析错误:语法错误,意外'&lt;&lt;&lt; (T_SL)in ...(第x行的文件路径)

答案 1 :(得分:0)

试着像这样使用。

$s = mysql_query("select * from user_reg where mid='".trim($mid)."'");