While循环中的数组,如sql fetch_array

时间:2015-07-28 18:08:58

标签: php sql-server

我们在项目中使用php + sqlserver和存储过程。我们的客户希望在我们的应用程序和数据库服务器之间放置另一台服务器(比如X服务器) 我们将向X发送请求,它将连接到DB并将数据返回给应用程序。 现在我们正在使用2个功能。 db_request(它有sqlsrv_request)和db_fetch(它有sqlsvr_fetch_array)。 例如,当我们选择一些城市时,我们调用select_user_by_city程序。

$req = db_request("select_user_by_city",array("city_id"=>1));
while($result=db_fetch($req)){blablabla}

我的问题从这一点开始。我在db_request函数内部进行了更改,并在其中添加了一些curl和json代码。它将请求发送到X服务器。 X服务器调用sqlsrv_request并选择数据并再次将数据作为json返回。我将json转换为应用程序服务器中db_fetch函数中的数组。但是当它进入while循环时,它会进入无限循环。因为返回的数据不再是资源,它是一个数组 无论如何要让这件事在没有改变的情况下工作,而不是为了预测吗?

2 个答案:

答案 0 :(得分:0)

这里的问题是,每次while循环结束一次,你就会循环db_fetch。它很可能意味着db_fetch永远不会返回false,但总是一个数组。

更改db_fetch以在它没有更多信息时返回一个数组(你可能需要保存一些状态,所以db_fetch知道它何时完成)或是,将它们更改为foreach循环。

答案 1 :(得分:0)

好的,我这样做将所有db_fetchs更改为代码中的next()函数。它的作品很棒!

while($result=next($req)) {blablabla