PHP 非 eof 记录集返回空值
我在 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];
}
奇怪的事情 - 查询是正确的 - 它回显“有数据”,但是当回显实际字段值时返回空字符串..:(
有什么想法可能是错误的吗?
i'm having a strange problem with php + recordsets.
my code:
$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];
}
the strange thing - the query is correct - it's echoing "there is data" but when echoing the actual field values returns empty strings .. :(
any ideas what could be wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在
else
块中,您使用mysql_fetch_array()
从数据库重新获取一些数据。但是第一行已经由
mysql_fetch_assoc()
提前获取。所以,基本上:
if
的条件下,您将获取第一行else
块您应该只进行一次提取——使用
mysql_fetch_assoc
或mysql_fetch_array
——而不是两次。In your
else
block, you are re-fetching some data from the database, usingmysql_fetch_array()
.But a first row has already been fetched earlier, by
mysql_fetch_assoc()
.So, basically :
if
's condition, you are fetching a first rowelse
blockYou should probably do only one fetch -- using either
mysql_fetch_assoc
ormysql_fetch_array
-- but not two.您已经获取了数据,请使用 mysql_num_rows() 代替
you already fetched data, use
mysql_num_rows()
instead使用时要保持一致 if mysql_fetch_assoc($rc)...
返回一个枚举数组,因此 $rs['id'] 不只存在 $rs[0]、$rs[1] 等。
用于
将 返回带有 $rs['id'] 的关联数组
您的第一个测试还获取并丢弃一行
并引用 $rs 中的索引:$rs['id'] 而不是 $rs[id]
Be consistent in your use of if mysql_fetch_assoc($rc)...
will return an enumerated array, so $rs['id'] doesn't exist only $rs[0], $rs[1], etc.
Use
to return an associative array with $rs['id']
Your first test also fetches and discards a row
And quote the indexes in $rs: $rs['id'] rather than $rs[id]