有如下代码:
global $db;
$query1 = "call user_degree('zhengfeng',@test);";
$db->query($query1);
$query2 = "select @test;";
    $temp = $db->query($query2);
$rowset = array();
while($row = $db->fetch_array($temp,MYSQL_ASSOC))
{
       array_push($rowset,$row);
}
print_r($rowset);  //Array ( [0] => Array ( [@test] => 4 ) ) 
    print_r($rowset[0][@test]); //return none要获取mysql存储过程返回的@test的值,这里我已经知道了$rowset的值是为一个二维数组。
可是我用$row[0][@test]却始终的不到这里面的值——"4"
求解释,求指教,各种求……

解决方案 »

  1.   


    楼上正解,完整过程如下:
    /*mysql*/
    user test;
    create procedure sp_demo(inout p int) select;
    /*php*/
    <?php
    $conn=mysql_connect('127.0.0.1');
    $query_p=mysql_query('set @test=123');
    $query=mysql_query('call test.sp_demo(@test)',$conn);
    $query_r=mysql_query('select @test');
    $result=mysql_fetch_array($query_r,MYSQL_ASSOC);
    var_dump($result);
    ?>
      

  2.   

    可以使用mysqli_multi_query一次提交:<?php
    $conn=mysqli_connect('127.0.0.1');
    $query=mysqli_multi_query($conn,'set @test=123;call test.sp_demo(@test);select @test');
    do{
      $query1=mysqli_store_result($conn);
      if($query1){
        $result=mysqli_fetch_array($query1);
        mysqli_free_result($query1);
        print_r($result);
      }
    }while(mysqli_next_result($conn))
    ?>