语法错误,意外'}',期待(T_WHILE)杀了我

时间:2015-05-24 02:34:39

标签: php mysqli mysql-5.6

我正在尝试将一些非常激烈的PHP页面从mysql for mySQL的第5版转换为mysqli。不想在这个时候使用PDO。

数据库在那里,一个简单的通用查询工作并通过将所有mysql语法转换为mysqli语法显示在PHP页面上,但对于我这样的人,我无法找出修复此错误的位置。我说它发生在第449行,我已经尝试过该行以上和以下的所有内容。 下面是错误,下面是第432行至第449行的代码。此页面在mySQL 4数据库中正常工作。

  

语法错误,意外'}'在第449行的C:\ inetpub \ wwwroot \ xxx \ carpoollocations.php中期待(T_WHILE)

第332-449行:

            } while ($myrowsel = mysqli_fetch_array($result,MYSQLI_BOTH));
echo "</TABLE>";
/*----------------------------------------------------------------
PAGING LINK - THIS IS USED FOR NEXT/PREVIOUS X RECORDS
----------------------------------------------------------------*/

    if ($reccount > 10) {
//IF THERE ARE MORE THAN 10 RECORDS PAGING
    $ttlpages = ($reccount / 10);
    if ($page < $ttlpages) {
    ?>

<HR>    <br>
<A HREF="<?php echo $thispage; ?>?posting=yes&page=<?php echo $page; ?>&reccount=<?php echo $reccount; ?>&searchcrit=<?php echo $searchcrit; ?>&<?php echo $pagevars; ?>">Next <?php echo $pagenorecords; ?> Records >></a> <br>

    <?php 
    } //END IF AT LAST PAGE
    } //END IF RECCOUNT > 10

__________________________________________________________________ 更新了新的信息,看起来像是答案:没有&#34;做的同时&#34;在msqli中循环。

谢谢大家的关注。 好吧,在while语句之后它不是分号。在发生相同错误时将其取消。 我无法找出意想不到的&#39;}&#39;}无论我删除或添加什么。所有的curlies似乎都很平衡。 由于这个块在整个页面上都没有语法错误,除了while语句之外的语法错误,我决定隔离&#34; do while&#34;循环到一个简单的,因为错误提到T_WHILE。我改变了它,把时间放在循环的顶部,它工作。将它放回到底部会产生不同的错误。

因此会运行并显示2列中的所有数据。

while ( $row = mysqli_fetch_array($result, MYSQLI_ASSOC) ) {

                  echo $row["id"]." ---- ".$row["Location"]."<br />";

    }

这会运行并产生错误&#34;未定义的变量:row&#34;: 现在,这是一个不同的错误,但这是一个开始。我明天会改变循环。我注意到即使我把&#34; die();&#34;靠近页面顶部的方式。

do {

              echo $row["id"]." ---- ".$row["Location"]."<br />";

}while ( $row = mysqli_fetch_array($result, MYSQLI_ASSOC) )

如果我朝着正确的方向前进,有什么想法吗?

2 个答案:

答案 0 :(得分:1)

            } while ($myrowsel = mysqli_fetch_array($result,MYSQLI_BOTH));<!--Change to {
echo "</TABLE>";
/*----------------------------------------------------------------
PAGING LINK - THIS IS USED FOR NEXT/PREVIOUS X RECORDS
----------------------------------------------------------------*/

    if ($reccount > 10) {
//IF THERE ARE MORE THAN 10 RECORDS PAGING
    $ttlpages = ($reccount / 10);
    if ($page < $ttlpages) {
    ?>

<HR>    <br>
<A HREF="<?php echo $thispage; ?>?posting=yes&page=<?php echo $page; ?>&reccount=<?php echo $reccount; ?>&searchcrit=<?php echo $searchcrit; ?>&<?php echo $pagevars; ?>">Next <?php echo $pagenorecords; ?> Records >></a> <br>

    <?php 
    } //END IF AT LAST PAGE
    } //END IF RECCOUNT > 10

在你的while循环中,你用;而不是{简单错误结束它并且很容易制作,但修复它应该可以解决问题。如果它之后仍然抛出错误,您可能需要在脚本末尾添加一个新的}来关闭while循环。

答案 1 :(得分:0)

你得到未定义的变量$ row因为do ... while循环将处理首先执行{}的代码,并且第一次没有注册变量$ row,然后它将处理while()并返回做第二次它会工作但是你应该在mysqli或mysql循环时直接使用错误