返回空值的PHP非eof记录集

返回空值的PHP非eof记录集,php,recordset,Php,Recordset,我对php+记录集有一个奇怪的问题。 我的代码: $rc = mysql_query("select * from myTable",$db); if (!$row = mysql_fetch_assoc($rc)) { $eof=true; }else{ echo "there is data!<br>"; $rs = mysql_fetch_array($rc); echo $rs[i

我对php+记录集有一个奇怪的问题。 我的代码:

    $rc = mysql_query("select * from myTable",$db);
    if (!$row = mysql_fetch_assoc($rc))
    {
        $eof=true;
    }else{
        echo "there is data!<br>";
        $rs = mysql_fetch_array($rc);
        echo $rs[id];
        echo $rs[txt];
    }
奇怪的是-查询是正确的-它在回显数据,但回显实际字段值时返回空字符串..:


有什么问题吗?

您已经获取了数据,请改用mysql\u num\u行


您已经获取了数据,请改用mysql\u num\u行


在使用if mysql\u fetch\u assoc$rc时保持一致

$rs = mysql_fetch_array($rc); 
将返回一个枚举数组,因此$rs['id']不存在,只有$rs[0]、$rs[1]等

使用

返回带$rs['id'的关联数组的步骤

您的第一个测试还获取和丢弃一行


并用$rs引用索引:$rs['id']而不是$rs[id]

如果使用mysql\u fetch\u assoc$rc

$rs = mysql_fetch_array($rc); 
将返回一个枚举数组,因此$rs['id']不存在,只有$rs[0]、$rs[1]等

使用

返回带$rs['id'的关联数组的步骤

您的第一个测试还获取和丢弃一行

并在else块中引用$rs:$rs['id']而不是$rs[id]

中的索引,您正在使用mysql\u fetch\u数组从数据库中重新获取一些数据

但是mysql_fetch_assoc已经在前面获取了第一行

因此,基本上:

在if条件下,您正在获取第一行 如果成功,则进入else块 您尝试获取第二行的位置 并使用返回的或未返回的数据,而不测试第二次提取是否成功。 您可能只需要执行一次获取—使用mysql\u fetch\u assoc或mysql\u fetch\u数组—而不是两次。

在else块中,您正在使用mysql\u fetch\u数组从数据库重新获取一些数据

但是mysql_fetch_assoc已经在前面获取了第一行

因此,基本上:

在if条件下,您正在获取第一行 如果成功,则进入else块 您尝试获取第二行的位置 并使用返回的或未返回的数据,而不测试第二次提取是否成功。 您可能应该只执行一次获取—使用mysql\u fetch\u assoc或mysql\u fetch\u数组—而不是两次

$rs = mysql_fetch_assoc($rc);