所以,我的问题是:我有一个查询sql并将其拉入资源的函数。在这个函数中,我运行:
if (odbc_num_rows($rs) === 0) {
return FALSE;
} else {
if ($type !== "Issues") {
while (odbc_fetch_row($rs)) {
$issues['tvi'][] = odbc_result($rs, 'TitleVolumeIssue_c_');
}
}
return $rs;
}
这正是它应该做的。然而,当我将$rs传递到下一个解析为html的方法中时,$rs似乎没有设置。奇怪的是,我可以调用odbc_num_rows($rs),它会给我正确的行数,但转储var显示它是错误的,我不能循环使用资源来获取任何值。
如何释放该资源以便在下一个函数中使用,或者如何重写IF条件以便在不取消设置资源的情况下获得值?
每次获取时,都会将数据库光标移到下一行。
所以odbc_fetch_row()
一直到下一行,直到最后一行。之后返回false。
很遗憾,您无法将行指针移回第一条记录。
您将不得不再次查询您的DB
。
另一个选项是将odbc结果存储在一个数组中,您可以使用foreach循环该数组。这样可以保留数据,并且只需要查询一次而不是多次(在处理大量数据时会有所帮助)。
while($row = odbc_fetch_array($rs)) {
$resultsArray[] = $row;
}
然后像这样循环。。。
foreach ($resultsArray as $key=>$value){
//Do what you need to do...
}
我在这里的问题中也有类似的问题,@Jeff Puckett能够很好地解释。