如何在存储过程Mysql中显示PHP中的记录

时间:2011-01-25 07:55:29

标签: php mysql stored-procedures

我用多个select语句创建存储过程,如下所示:

DELIMITER $$

DROP PROCEDURE IF EXISTS `testsp` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `testsp`(

)
BEGIN
select area_id,areaname from area;
select loc_id,locname from location;
END $$

DELIMITER ;

这显示了2个不同的结果。虽然我想在PHP中显示不同。 Php代码:

$res = $mysqli->query("call testsp()");
  while($row = $res->fetch_assoc())
   {
   $arr[] = $row['area_id'];
   $arr[] = $row['areaname'];
   $arr1[] = $row['loc_id'];
   $arr1[] = $row['locname'];
   }
   echo '{"users":'.json_encode($arr).'}';
   echo '{"users":'.json_encode($arr1).'}';

当我尝试显示$ arr1时,它显示空值...所以我如何在Php中显示第二个结果集。

1 个答案:

答案 0 :(得分:0)

您有一个选项使用union all来合并这2个查询。

喜欢:

select 1 as type, area_id as id ,areaname as name from area
union all 
select 2 as type , loc_id as id ,locname as name from location; 

另一种选择是使用cursor, 使用游标循环到sql查询。

然后将每个循环的结果INSERT到一个临时表中,然后在循环完成后从该表中选择SELECT *。