PHP中While循环的问题

PHP中While循环的问题,php,loops,while-loop,Php,Loops,While Loop,我的WHILE循环有什么问题吗 <?php include('header.php'); $manage = "current_page_item"; include('nav.php'); include('sidebar.php'); ?> <div class="primary"> <br/> <?php $userId = $_GET[

我的WHILE循环有什么问题吗

    <?php
        include('header.php');
        $manage = "current_page_item";
        include('nav.php');
        include('sidebar.php');
    ?>
    <div class="primary">
    <br/>
    <?php
    $userId = $_GET['id'];
    echo "<div class=\"item_list\">";
    $sql = "SELECT * FROM user WHERE id = " . intval($userId);
    $result = mysql_query($sql);
    while($item = mysql_fetch_array($result, MYSQL_ASSOC))
    {
        echo "<b>Title: </b>" . $item['item'] . "<br/><b>Email: </b>" . $item['email'] . "<br/>";
        echo "<b>Price: </b>" . $item['price'] . "</b><br/><b>Category: </b>" . $item['category'] . "</b><br/> <b>Extra: </b>" . ($item['extra'] ."</b><br/><b>Date Listed: </b>". $item['date'];
    }
    echo "</div>";
?>
</div>
<?php include('footer.php'); ?>

你的错误在这里。您使用了错误的变量名来获取行:

while($userid = mysql_fetch_array($result, MYSQL_ASSOC)){
应该是:

while($item = mysql_fetch_array($result, MYSQL_ASSOC)){

此外,在结束标记?>之前的最后一行有一个松散的结束括号}。我不知道它是因为你没有回答问题的开头部分而孤立的,还是真的错了。

删除最后一行的结尾。

似乎你把变量命名错了

您在while函数参数中传递了$userid,但在循环中使用了$item


除非您只发布了函数的一个片段,否则您还有一个额外的}。

在第二条回显行上,您有一些多余的括号。应该是:

echo "<b>Price: </b>" . $item['price'] . "</b><br/> <b>Category: </b>" . $item['category'] . "</b><br/> <b>Extra: </b>" . $item['extra'] . "</b><br/><b>Date Listed: </b>" . $item['date'];
除了BoltClock和stoosh所说的,您还有一个语法错误:

echo "<b>Price: </b>" . $item['price'] .
     "</b><br/> <b>Category: </b>". $item['category'] . 
     "</b><br/> <b>Extra: </b>". $item['extra'] . 
     "</b><br/><b>Date Listed: </b>". $item['date'];

我想那是对的,但还是不行。这个车站怎么样$sql=从id=的用户中选择*。intval$userId;你说的“没工作”是什么意思?这会给你一个错误吗?Try$result=mysql\u query$sql或diemsql\u错误;如果它说了什么,告诉我。还要确保错误报告完全打开;将错误报告放在所有位置;在脚本的开头。好的,我打开了错误报告,我收到了通知:未定义变量:useridin@tim:通过单击相应答案下的勾号,确保接受对您最有帮助的答案。很高兴你解决了@蒂姆:你可以在php.ini中设置,或者在运行时使用error_reporting函数设置。作为参考,你不应该编辑问题中的代码来反映答案。如果不查看修订历史记录,以后查看问题的人将看不到导致问题的原始代码,同时查看修订历史记录和答案是一件痛苦的事情。对其他编辑来说:非常,非常确定,当您试图更清晰地格式化代码时,您没有更改代码的任何实际语法或含义。正如赵所说,这可能会导致答案混淆。@赵我认为所做的更改只是格式化,而不是修复代码itself@Simon_Weaver:参见BoltClock的答案所依据的第一次修订。从那以后,有人修改了密码。赵的第一条评论是指蒂姆将我们的答案合并到他自己的编辑中。我的评论是指任何可能改变代码含义的重新格式化。
error_reporting(E_ALL);
ini_set("display_errors", "on");