$sql=mysql_query("select * from t where gameid=$id order by id desc");
$info=mysql_fetch_array($sql);do{
echo "$info->id";
echo "$info->name;}
while($info=mysql_fetch_object($sql));不管查什么都是少一条记录,不知道怎么回事,大家帮忙看下代码

解决方案 »

  1.   

    $sql=mysql_query("select * from t where gameid=$id order by id desc");
    //这句得去掉,不然你加上,然后再用循环,就是从第二条开始了
    //因为你取了一遍数据,指针向下移了一位,再循环就是从第二条开始了呗
    $info=mysql_fetch_array($sql);do{
    echo "$info->id";
    echo "$info->name;
    }
    while($info=mysql_fetch_object($sql));
      

  2.   

    楼上说的很对,首先你从结果集中取出一行作为枚举数组,在这里再循环时指针就下移了一位。
    输出对象时不要加引号
    另外你这样写效率很低,do while循环效率比较低,它是不管条件成不成立都会先循环一次然后再去检查条件,建议用while后者foreach来做,foreach的效率最高!这是你的代码
    $sql=mysql_query("select * from t where gameid=$id order by id desc");
    do{
    echo $info->id;
    echo $info->name;
    }
    while($info=mysql_fetch_object($sql));
    这是while做的:
    $sql=mysql_query("select * from t where gameid=$id order by id desc");
    while($info = mysql_fetch_array($sql))
    {
    echo $info['id'].'<br>';
    echo $info['name'].'<br>';
    }