2015-03-30 74 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'];