意外的$ end:我知道罪魁祸首的确切位置,但不知道如何解决它

时间:2011-03-21 05:35:29

标签: php mysql pagination html-table

我收到此错误消息:

  

“解析错误:语法错误,第822行的C:\ Users \ Stacky \ Desktop \ xampp \ htdocs \ wweff \ stackhelp.php中的意外$结尾”

我一直在尝试通过修改我的代码的第一行(第54行)来使这段代码正常工作。

这是完整的代码。请注意“// ^^^^ RIGHT ABOVE IS LINE 54”。在下面的代码中:

<html>
<head>
</head>
<body>
    <?php
        $objConnect = mysql_connect("localhost","root","") or die(mysql_error());
        $objDB = mysql_select_db("thegoodhumor");
        $strSQL = "SELECT * FROM gallery";
        if (!isset($_GET['Page']))  $_GET['Page']='0';
        $objQuery = mysql_query($strSQL);
        $Num_Rows = mysql_num_rows($objQuery);
        $Per_Page = 16;   // Per Page

        $Page = $_GET["Page"];
        if(!$_GET["Page"])
        {
            $Page=1;
        }

        $Prev_Page = $Page-1;
        $Next_Page = $Page+1;

        $Page_Start = (($Per_Page*$Page)-$Per_Page);
        if($Num_Rows<=$Per_Page)
        {
            $Num_Pages =1;
        }
        else if(($Num_Rows % $Per_Page)==0)
        {
            $Num_Pages =($Num_Rows/$Per_Page) ;
        }
        else
        {
            $Num_Pages =($Num_Rows/$Per_Page)+1;
            $Num_Pages = (int)$Num_Pages;
        }

        $strSQL .=" order  by GalleryID ASC LIMIT $Page_Start , $Per_Page";
        $objQuery  = mysql_query($strSQL);
                $cell = 0;
                echo '<table border="1" cellpadding="2" cellspacing="1"><tr>';
                while($objResult = mysql_fetch_array($objQuery))
                {
                  if($cell % 4 == 0) {
                  echo '</tr><tr>';
                }

                if($cell == 2 || $cell == 3) {
                echo '<td>RESERVED</td>';
                } else {
                echo '<td><img src="https://s3.amazonaws.com/imagetitle/' .  
                $objResult["Picture"];?>" height="190" width="190" /> . .$objResult["GalleryName"].'\</td>';
                //^^^^ RIGHT ABOVE IS LINE 54.
                }
                $cell++;
                }
                echo '</tr></table>';
    ?>
        <?php
          //DELETED PAGINATION CODE for the sake of simplicity in StackOverflow
        ?>
        </body>
        </html>
        <?php
        mysql_close($objConnect);
        ?>

3 个答案:

答案 0 :(得分:4)

        $objResult["Picture"];?>" height="190" width="190" /> . .$objResult["GalleryName"].'\</td>';

包含?>,它告诉PHP解释器停止解释,换句话说,后面的所有内容都是原始HTML。

尝试将;?>更改为.,将`更改为height="190",然后移除\之前的</td>,并提供:

        $objResult["Picture"] . 'height="190" width="190" />' .
            $objResult["GalleryName"] . '</td>';

答案 1 :(得分:1)

你有“?&gt;”在第54行的中间,它告诉PHP停止预处理(在echo语句的中间)。你可能想删除它。

答案 2 :(得分:0)

在以下代码部分中:

while($objResult = mysql_fetch_array($objQuery))
{
  if($cell % 4 == 0) { // A { is opened here
  echo '</tr><tr>';
  // Maybe it should be closed here ?
}

您似乎没有关闭与{对应的if


而且,在您的代码中稍低一点,您有}似乎不属于那里:

if($cell == 2 || $cell == 3) {
    echo '<td>RESERVED</td>';
} else {
    echo '<td><img src="https://s3.amazonaws.com/imagetitle/' .  
    $objResult["Picture"];?>" height="190" width="190" /> . .$objResult["GalleryName"].'\</td>';
    //^^^^ RIGHT ABOVE IS LINE 54.
} // closing the else
$cell++;
} // what is this doing here ?


在这种情况下的一般建议:正确缩进代码!

这将使你更容易发现这类问题;-) 当然,会让您的代码更容易阅读。