0

MySQL で作成され、PHP ファイルでレコードを返す 2 つのプロシージャを呼び出す必要があります。プロシージャを次々と呼び出すことができません。(単一の PHP ページから) 別のプロシージャを次々と呼び出すと、2 番目のプロシージャはレコードを返しません。

selectプロシージャ(レコードを返す)の後にレコードを返すステートメントを実行しても、selectステートメントは値を返さないことを意味します。なぜこれが起こっているのですか?1 つの PHP ページで 2 つのプロシージャを次々に呼び出すにはどうすればよいでしょうか?

こんにちは、ここにコードを追加しています...

model.php ファイルの内容

<?php 
class DBoperation {
    function connect(){     
        $this->con=mysql_connect('localhost','root','');    
        mysql_select_db('test',$this->con);     
    }  

    function call proc2($empcode){
        $this->sql="call proc1('$empcode',@strGrpId,@strTodate,@strAccPrTodt,@strRecalculate)";
    }

    function callproc2($strEmpCode){  
        $this->sql="call proc2('$strEmpCode',@a,@b,@c,@d,@e,@f)";  
    }

    function execute(){
        $res = mysql_query($this->sql);
        return $res;
    }
}
?>

view.php ファイルの内容

<?php 
require_once('../../model/model.php'); 
$empcode = $_SESSION['empcode'];
$obj=new DBoperation(); 
$obj->connect();
//calling first procedure 
$obj->callproc1($empcode);
$res = $obj->execute(); 
while($result=mysql_fetch_array($res)) {
    echo $result[0]; 
} 
//calling second procedure
$obj->callproc2($empcode); 
$fetch=$obj->execute();
while($fetch1=mysql_fetch_array($fetch)){
    echo $fetch1[0]; 
}
?>

2 番目のプロシージャは何も返しません。2番目の手順の後に選択クエリを実行しても、何も返されません。

4

2 に答える 2

0

これを試して

    <?php    
// New Connection

$db = new mysqli('localhost','user','pwd','Dbname');

// Check for errors

if(mysqli_connect_errno())

{

echo mysqli_connect_error();

}

// 1st Query

$result = $db->query("call proc1($empcode)");

   if($result)

     {

            while ($row = $result->fetch_object())

             {
              echo $col1="$row->Column Name1"."<br>";
              echo $col2="$row->Column Name2"."<br>";
             }

             // Free result set
             $result->close();
             $db->next_result();
     }


    // 2nd Query
    $result = $db->query("call proc2('$empcode')");
    if($result)   

    {

            while ($row = $result->fetch_object())

               {
                echo $col1="$row->Column Name1"."<br>";
                echo $col2="$row->Column Name2"."<br>";
               }

               // Free result set
               $result->close();
               $db->next_result();
    }
          else echo($db->error);

        // Close connection
         $db->close();


?>
于 2013-03-15T12:17:57.867 に答える
0

最初 $db->next_result();に取得した後に実行します。

于 2017-03-22T09:01:16.550 に答える