【问题标题】:php parse error always on the last line [closed]php解析错误总是在最后一行[关闭]
【发布时间】:2011-01-13 13:07:51
【问题描述】:

我正在尝试读取存储在 mysql 表中的评论。出于某种原因,即使最后一行是空白的,我总是在文件的最后一行出现解析错误。我不确定它是否相关,但 connect.php 可用于将评论放入数据库。我正在使用 wampserver 来托管它并手动对其进行编码。

我认为这与 while 循环有关,当我在结尾处注释掉 while(){ 和 } 时,我只会得到一些缺少变量的错误,正如您所期望的那样。我对 php 编码很陌生,所以我很确定问题很简单,我要么错过了,要么没有正确理解。

无论如何,这是我的代码:

<?php
include "connect.php";
?>

<?php
$sql = "SELECT * FROM main";
$result = mysql_query($sql) or die("Could not get posts from table");
while($rows=mysql_fetch_array($result)){
?>
     <table bgcolor="green" align="center">
     <tr>
     <td></td>
     </tr>
     <tr>
     <td><strong> <? echo $rows['name']; ?> </strong></td>
     </tr>
     <tr>
     <td> <? echo $rows['email']; ?> </td>
     </tr>
     <tr>
     <td> <? echo $rows['comment']; ?> </td>
     </tr>
     </table>
<?
}
?>

感谢您的帮助。 :)

【问题讨论】:

  • 最后一行的解析错误通常意味着缺少某些内容,无论是未闭合的字符串还是未终止的 if/for/while。我在这里没有看到任何这些,但它们可能在 connect.php
  • 是的,这个错误通常是缺少右括号。
  • 你永远不应该真正使用短标签'' & '?>',因为它降低了代码的可移植性。您应该始终使用 '' 关闭它。第二,有时我在页面上的最后一个 ?> 后面有空格时会出错,所以如果你把它关掉,它可能会解决你的错误。

标签: php wampserver parse-error


【解决方案1】:

捷径并不总是可用的。短标签可用 short_tags 函数 ()(仅限 PHP 3),设置 PHP short_open_tag 配置文件的参数,或通过编译 PHP 使用 -enable-short -tags 选项来配置。虽然它在 php.ini-dist 中默认启用,但它不鼓励使用短标签格式。

虽然这可能还不够,但手册重申并扩展了其他不合适的情况:

"注意:在开发用于重新分发的应用程序或库时,或者为不受您控制的服务器开发时,不要使用短标签,因为服务器可能不支持短标签。构建可移植、可再分发的代码,请务必不要使用短标签。”

事实上,在 PHP 6 或 7 中,这些标签将被移除。

顺便说一句,在 Zend Framework 手册中明确表示“不允许使用短标签”:)

【讨论】:

    【解决方案2】:

    我有好几次被看起来不像的角色迷惑了。当我从浏览器复制粘贴代码时,我发现删除并重新输入 ' 和 " 可以清除错误。

    【讨论】:

      【解决方案3】:

      尽可能启用短标签。那是你的问题。如果您将 php 添加到您的每个

      【讨论】:

        【解决方案4】:

        如果您将文件包含在其他 php 文件中,请尝试删除文件末尾的结束 PHP 标记(当然,使用完整的标记名称):

           ....<td> <? echo $rows['comment']; ?> </td>
         </tr>
         </table>
        <?php
        }
        

        【讨论】:

          【解决方案5】:

          您是否启用了短标签?您的代码底部如下所示:

          <? 
          } 
          ?> 
          

          如果未启用短标签,则必须使用&lt;?php打开一个php标签

          <?php
          } 
          ?>
          

          没有正确的开始标签会导致最后一行出现错误,因为它需要一个}。另见:http://www.bin-co.com/php/articles/using_php_short_tags.php

          【讨论】:

            【解决方案6】:

            看起来您禁用了 PHP 短标签。所以

            替换

            <?
            

            <?php
            

            要使您的程序可移植,请避免使用短标签。如果您仍然必须使用可以启用的短标签。请参阅this 帖子了解如何操作。

            【讨论】:

            • 感谢您的帮助,我不明白普通标签和短标签的区别。将它们更改为
            • 只是 PHP 支持多种类型的标签,例如:(std 标签)、 [code here] ?> (short tag), (ASP style tag) 但是你的 server 可以配置为不支持短标签。因此,具有短标签的应用程序只能在启用它们的服务器上运行。因此,为了使您的应用程序可移植,建议您坚持使用 std 标签。
            猜你喜欢
            • 1970-01-01
            • 2010-11-18
            • 2014-04-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-01
            • 1970-01-01
            • 2014-12-03
            相关资源
            最近更新 更多