解析错误:语法错误,意外T_ECHO

时间:2011-04-26 16:38:48

标签: php syntax

过去几天我一直在做一些事情,但这一段代码永远会引发一个意想不到的T_ECHO。我的朋友似乎无法发现任何问题,我处于耐心的边缘。即使删除了嵌套的while循环,它仍然会抛出错误,我切换到while:endwhile;语法以及我仍然得到它。我肯定答案是盯着我,但我可能看不到它。

  while ($row = mysql_fetch_array($result, MYSQL_ASSOC)):        
            echo "<tr>";
              echo "<td>". $row["site_description"] ."</td>";
              echo "<td>". $row["url"] ."</td>";
              echo "<td><select>";
                while ($roar = mysql_fetch_array($categories, MYSQL_ASSOC)):
                  echo "<option value=\"". $roar["category"] ."\">". $roar["category"] ."</option>";
                endwhile;
              echo "</select></td>";
            echo "</tr>";
          endwhile;

2 个答案:

答案 0 :(得分:2)

您可以使用短标记使其更具可读性,并且可能不易出错。

<?php while ($row = mysql_fetch_array($result, MYSQL_ASSOC)): ?>
    <tr>
        <td><?= $row["site_description"] ?></td>
        <td><?= $row["url"] ?></td>
        <td>
            <select>
            <?php while ($roar = mysql_fetch_array($categories, MYSQL_ASSOC)): ?>
                <option><?= $roar["category"] ?></option>
            <?php endwhile; ?>
            </select>
        </td>
    </tr>
<?php endwhile; ?>

答案 1 :(得分:0)

试试这个......

我认为它可能已经崩溃了,因为一旦你解析了类别结果集,对于第一个站点,它在下次调用mysql_fetch_array时没有任何结果。因此,预先执行此操作并将结果弹出到变量中即可修复。

我在字符串中添加了“\ t”和“\ n”,以便在视图源中巧妙地制作html格式。

    $result = mysql_query("select * from tmp_sites");
$categories = mysql_query("select * from tmp_cats");
$select_options = "";
while ($roar = mysql_fetch_array($categories, MYSQL_ASSOC)):
                  $select_options .= "\t\t<option value=\"". $roar["category"] ."\">". $roar["category"] ."</option>\n";
                endwhile;
echo "<table>";
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)):
            echo "\t<tr>\n";
              echo "\t\t<td>". $row["site_description"] ."</td>\n";
              echo "\t\t<td>". $row["url"] ."</td>\n";
              echo "\t\t<td><select>\n";
                echo $select_options;
              echo "\t\t</select></td>\n";
            echo "\t</tr>\n";
          endwhile;
echo "</table>"