Php While循环中的数组类似于sql fetch\u数组
我们在一个项目中使用php+sqlserver和存储过程。我们的客户希望在应用程序和数据库服务器之间放置另一台服务器(比如X服务器)。 我们将向X发送请求,它将连接到DB,并将数据返回给应用程序。 现在我们使用2个函数。db_请求(它有sqlsrv_请求)和db_fetch(它有sqlsvr_fetch_数组)。 例如,当我们选择一些城市时,我们调用select_user_by_city过程Php While循环中的数组类似于sql fetch\u数组,php,sql-server,Php,Sql Server,我们在一个项目中使用php+sqlserver和存储过程。我们的客户希望在应用程序和数据库服务器之间放置另一台服务器(比如X服务器)。 我们将向X发送请求,它将连接到DB,并将数据返回给应用程序。 现在我们使用2个函数。db_请求(它有sqlsrv_请求)和db_fetch(它有sqlsvr_fetch_数组)。 例如,当我们选择一些城市时,我们调用select_user_by_city过程 $req = db_request("select_user_by_city",array("city_
$req = db_request("select_user_by_city",array("city_id"=>1));
while($result=db_fetch($req)){blablabla}
我的问题就从这一点开始。我更改了db_请求函数的内部,并在其中添加了一些curl和json代码。它将请求发送到X服务器。X服务器调用sqlsrv_请求并选择数据并再次以json形式返回数据。在应用服务器的db_fetch函数中将json转换为数组。但当它进入while循环时,它将进入无限循环。因为返回的数据不再是资源,它是一个数组。在foreach的整个过程中,是否有任何方法可以让这件事不做任何更改而工作?这里的问题是,每次while循环完成一次,您都在循环db\u fetch。这很可能意味着db_fetch永远不会返回false,而是始终返回一个数组
要么更改db_fetch以在数组不再具有进一步信息时返回数组(您可能必须保存一些状态,以便db_fetch知道何时完成),要么是,将它们更改为foreach循环。好的,我这样做了,在代码中将所有db_fetch更改为next()函数。它的作品很棒
while($result=next($req)) {blablabla
下面是我所做的:有一个php扩展名为
runkit
。使用此扩展可以重命名函数。因此,我将next()
函数重命名为db\u fetch
。当调用db\u fetch
时,实际上是调用php的next
函数。但这还不够,因为当您将此函数放入while循环时,正如在next
函数中提到的,它总是返回next值。所以我只是在所有数组的开头添加了一个空元素,一切都很好!