2011-03-25 123 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]