0

我需要调用两个在 MySQL 中创建并在 PHP 文件中返回记录的过程。我不能一个接一个地调用一个程序。如果我在另一个过程之后调用一个过程(从单个 PHP 页面),第二个过程将不会返回任何记录。

即使我select在一个过程(返回记录)之后执行一个返回记录的语句,也意味着select语句不会返回任何值。为什么会这样?我们如何在一个 PHP 页面中一个接一个地调用两个过程?

嗨,我在这里添加我的代码...

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]; 
}
?>

第二个过程不返回任何内容。如果我在第二个过程之后执行任何选择查询,我也不会返回任何内容。

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 回答