2015-03-30 77 views
0

我有一个SP 2 IN和4 OUT参数。它在MYSQL中工作正常,但当我使用PHP进行调用时没有问题。MYSQL存储过程给出空值

这里是我的代码:

try{ 
      //var_dump($mysqli); 
      // bind the first parameter to the session variable @uid 
      $stmt = $mysqli->prepare('SET @tid := ?'); 
      $stmt->bind_param('i', $tid); 
      $stmt->execute(); 

      // bind the second parameter to the session variable @userCount 
      $stmt = $mysqli->prepare('SET @mid := ?'); 
      $stmt->bind_param('i', $memID); 
      $stmt->execute(); 

      // execute the stored procedure 
      $sql_1 = 'CALL supplyRSummary(@tid,@mid,@a,@na,@r,@nv)'; 
      $stmt = $mysqli->prepare($sql_1); 

      // execute the second query to get values from OUT parameter 
      $sql_2 = 'SELECT @a,@na,@r,@nv'; 
      $result = $mysqli->query($sql_2); 
      $rows = $result->fetch_assoc(); 

      if ($rows) { 
       $a=$rows['a']; 
       $na=$rows['na']; 
       $r=$rows['r']; 
       $nv=$rows['nv']; 

       var_dump($a); 
      } 
     }catch (PDOException $pe){ 
      die("Error occurred:" . $pe->getMessage()); 
     } 

这里,var_dump($a)给“null的价值。

任何关于我的代码有什么问题的建议?

+0

你不能别名'SELECT'查询一样, 。你必须指定列。 – 2015-03-30 17:29:21

+0

SET @ p0 ='1'; SET @ p1 ='9'; CALL'supplyRSummary'(@ p0,@ p1,@ p2,@ p3,@ p4,@ p5); SELECT @ p2 AS'a',@ p3 AS'na',@ p4 AS'r',@ p5 AS'nv';上述 – 2015-03-30 17:33:40

+0

给出正确的结果在MySQL – 2015-03-30 17:34:12

回答

0

针对这两条线:

$sql_2 = 'SELECT @a,@na,@r,@nv'; 
$a=$rows['a']; 

计划A:更改为

$sql_2 = 'SELECT @a AS a, @na AS na, @r AS r, @nv AS nv'; 
$a=$rows['a']; 

计划B:更改为

$sql_2 = 'SELECT @a,@na,@r,@nv'; 
$a=$rows['@a'];