php mysqli调用存储过程,获取结果

php mysqli调用存储过程,获取结果,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个执行地理空间查询的存储过程。proc发出两条sql语句,但只有第二条语句执行查询,但不幸的是,这两条语句都会生成一个结果集。我需要第二个结果集,它包含实际查询的结果 第一条语句设置一个边界框: SET @bbox = 'POLYGON(($polygon))'; \n SELECT * , AsText( location ) FROM users WHERE Intersects( location, GeomFromText( @bbox ) ) [snipped for

我有一个执行地理空间查询的存储过程。proc发出两条sql语句,但只有第二条语句执行查询,但不幸的是,这两条语句都会生成一个结果集。我需要第二个结果集,它包含实际查询的结果

第一条语句设置一个边界框:

SET @bbox = 'POLYGON(($polygon))'; \n
SELECT * , AsText( location ) 
  FROM users
  WHERE Intersects( location, GeomFromText( @bbox ) ) [snipped for brevity]
如果我在phpMyAdmin中运行上述命令,它会工作,但在发出SET命令后,我会收到以下消息,我想将其丢弃:

# MySQL returned an empty result set (i.e. zero rows).
在php方面,我构建查询字符串,调用存储的proc,在返回时,我要做的第一件事就是扔掉空的结果集

$query = "CALL usp_queryByPolygon('$polygon', $msg_id, $user_type)";
$result = mysqli_query($cxn, $query) or die("GEOCODE: queryPolygon - " .sql_error());
sql_free_result($result); 
扔掉结果集后,我现在需要查询的结果,这就是我所做的:

$result = sql_next_result();
问题是当我尝试使用第二个结果集时,如中所示:

if(mysqli_num_rows($result) > 0)
我发现错误:

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
in /blah/blah/module.php on line 96
使事情复杂化的是,上面所有的都是一个循环,可能有几十个或100个多边形需要搜索


所以问题是:获得第二个结果集的正确方法是什么?

您最好准确地知道您执行了哪些函数
sql\u next\u result()
不是标准的PHP函数,在您似乎使用的MySQLi中也不是。如果它是某种数据库类,请只显示该类使用的方法。这里没有人能不质疑
sql\u next\u result()
做了什么


假设您正在谈论的是,它确实返回一个布尔值,您需要在这之后调用,以便检索下一个结果集。

发现两条语句:set@bbox和SELECT可以顺序执行,因此mysqli和这两个结果只是不需要处理的素材。

仅供参考,sql_next_result()中显示为sql_的函数是db抽象层中的函数,这些函数直接映射到mysqli函数。
$query = "CALL usp_queryByPolygon('$polygon', $msg_id, $user_type)";
$result = mysqli_query($cxn, $query) or die("GEOCODE: queryPolygon - " .sql_error());
sql_free_result($result);