2011-03-25 85 views
1

我有一个奇怪的问题与PHP +记录集。 我的代码:PHP非eof记录集返回空值

$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

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

但是第一行已经被更早的提到mysql_fetch_assoc()


因此,基本上:

  • if的情况下,你是获取第一行
  • 如果成功,你进入else
    • ,你试试到取第二行
    • 并使用返回的(或不)数据,而不测试第二次获取的成功。


你或许应该做只有一个取 - 无论是使用mysql_fetch_assocmysql_fetch_array - 而不是两个。

2

你已经获取的数据,使用mysql_num_rows()代替

$rc = mysql_query("select * from myTable",$db); 
if (mysql_num_rows($rc)) 
{ 
    echo "there is data!<br>"; 
    $rs = mysql_fetch_array($rc); 
    echo $rs[id]; 
    echo $rs[txt]; 

}else{ 
    $eof=true; 
} 
1

在你用的,如果MYS一致ql_fetch_assoc($ RC)...

$rs = mysql_fetch_array($rc); 

将返回枚举数组,所以$ RS [ 'ID']不存在只有$ RS [0],$ RS [1],等等

使用

$rs = mysql_fetch_assoc($rc); 

与$返回一个关联数组RS [ '身份证']

你的第一个测试中也取得并丢弃行

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