php odbc导致unsetting
问题描述:
所以,这是我的问题:我有一个函数,查询SQL并将其拉入资源。在此功能中,我运行:php odbc导致unsetting
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...
}
我在我的问题here也有类似的问题,@Jeff Puckett能解释得很好。
+0
这反过来使答案不同。我提供了代码,并且我还提供了一种方法来保存该信息以进一步处理数据,以防再次查询数据库不是一种选择。 – 2017-10-04 21:45:15
issues数组包含我从资源中提取的一组数据,但在其他地方使用,elsewhen。该资源是我需要传递给下一个函数的资源,以便循环访问资源并提取所需的所有数据。 – VikingBlooded 2014-09-04 20:38:13
好的,我明白你的意思了,这是行不通的。当循环之后返回'rs'时,资源未被设置。你的选择是再次查询数据库。 – meda 2014-09-04 20:40:00
返回$ rs在循环之外工作正常,但是如果我运行循环,它是未设置的。将光标放回第1行会不会让你觉得? – VikingBlooded 2014-09-04 20:41:35