PHP非eof-recordset返回空值

时间:2011-03-25 19:21:27

标签: php recordset

我的php + recordsets有一个奇怪的问题。 我的代码:

    $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];
    }

奇怪的是 - 查询是正确的 - 它回显“有数据”但是当回显实际字段值时返回空字符串.. :(

任何想法可能出错?

3 个答案:

答案 0 :(得分:3)

else块中,您将使用mysql_fetch_array()从数据库中重新获取一些数据。

但是mysql_fetch_assoc()之前已经提取了第一行。


所以,基本上:

  • if条件下,您抓取第一行
  • 如果成功,则输入else
    • 您尝试获取第二行
    • 并使用返回的(或不是)数据,而不测试第二次获取的成功。


你应该只做一次 - 使用mysql_fetch_assocmysql_fetch_array - 而不是两次。

答案 1 :(得分:2)

您已经提取了数据,请改用<{1}}

mysql_num_rows()

答案 2 :(得分:1)

如果使用mysql_fetch_assoc($ rc)...

,请保持一致
$rs = mysql_fetch_array($rc); 

将返回一个枚举数组,因此$ rs ['id']不存在仅$ rs [0],$ rs [1]等。

使用

$rs = mysql_fetch_assoc($rc);

返回带有$ rs ['id']

的关联数组

您的第一个测试也会提取并丢弃一行

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