2012-01-03 10 views
1

を使用した複数のレコードを取得しますタブをクリックします。しかし、私はmysqliコネクタを使用している私のPHPスクリプトでこのストアドプロシージャを呼び出すときに、私はちょうど最初のレコードセットを取得します。ここで私はこのようなストアドプロシージャを使用して複数のレコードセットを返すようにしようとしていますMySQLiのオブジェクト

は私のPHPスクリプトです:

<?php 
// New Connection 
$db = new mysqli('localhost','root','','db_test'); 

// Check for errors 
if(mysqli_connect_errno()){ 
echo mysqli_connect_error(); 
} 
echo "<pre>"; 

// 1st Query 
$result = $db->query("call multiple()"); 
if($result){ 
    // Cycle through results 
    while ($row = $result->fetch_object()){ 
     $user_arr[] = $row; 
    } 
    // Free result set 
    $result->close(); 
    $db->next_result(); 
} 
print_r($user_arr); 

我々はmysqliのオブジェクトを使用して、第2のレコードセットを取得できますか?

DELIMITER $$ 
CREATE PROCEDURE `multiple`() 
BEGIN  
    SELECT * FROM account; 
    SELECT * FROM admin;  
END $$ 

はPHPで複数のレコードセットを取得:プロシージャを作成します

+0

コール$ DB-> next_result();もう一度? –

答えて

1

あなたが準備されたステートメントを使用する必要が

//connection 
$mysqli = new mysqli('hostname','username','password','db_name'); 

// Check for errors 
if(mysqli_connect_errno()){ 
    echo mysqli_connect_error(); 
} 

//prepare statement 
$stmt = $mysqli->prepare("call multiple()"); 

//run statement 
$stmt->execute(); 

//fetch all recorsets returned by procedure 

$recordset_Counter = 0; 

while ($stmt->more_results()) 
{ 
    echo "Recordset($recordset_Counter) : <br/>"; 
    $res = $stmt->get_result(); 

    //fetch all records from current recordset 
    while($row = $res->fetch_assoc()) 
    { print_r($row); echo "<br/>"; } 

    $stmt->next_result(); 
    $recordset_Counter++; 
} 
+0

これに関連して準備されたステートメントはどのようになっていますか? –