没有数据收到错误的mysqli免费结果

时间:2014-09-01 05:37:10

标签: php mysql database mysqli

我正在使用OOP概念来使用mysqli连接到我的数据库但是在这里我收到一个错误,因为 "数据库查询不同步你不能运行这个命令" 这就是我使用mysqli free结果的原因,现在我没有收到任何数据作为输出。可能是什么错误?

以下是我的数据库连接类

class MySQLDatabase{
private $connection;
public $last_query;
private $magic_quotes_active;
private $real_escape_string_exists;

function __construct()
{
    $this->open_connection();
    $this->magic_quotes_active = get_magic_quotes_gpc();
    $this->real_escape_string_exists = function_exists( "mysqli_real_escape_string" );
}


public function open_connection()
{
    $this->connection=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME) ;
    mysqli_set_charset($this->connection,"utf8");
    if(!$this->connection)
     {
         die("database connecetion failed".mysqli_error($this->connection));
     }
}

public function close_connection()
{
    if(isset($this->connection))
    {
        mysqli_close($this->connection);
        unset($this->connection);
    }
}

public function fetch($result_set)
{
    return mysqli_fetch_array($result_set);
}

public function query($sql)
{
  $this->last_query=$sql;
  $result=$this->connection->query($sql);

    if(!$result)
    {
        die("database query failed ".mysqli_error($this->connection));
    }
    return $result;
}

public function free_result($result)
{
    return $this->free_result($result);
}
}
$database=new MySQLDatabase();

这就是我调用我的程序的方法,但它提供输出,因为没有收到数据我不知道是什么问题

    $qryCallImgProc = "CALL description (".$postId.","."@commentOutput,@likeCount,@commentCount)";
    $exeCallIgProc = $database->query($qryCallImgProc);
    while($row = $database->fetch($exeCallIgProc))
    {
        print_r($row);
    }  

    $database->free_result($exeCallIgProc);
    $database->close_connection();

    $qryLikeCount = "SELECT * from user";
    $exeLikeCount = $database->query($qryLikeCount);        
    while ($fetchDetails = $database->fetch($exeLikeCount)) {
         print_r($fetchDetails);
     } 

1 个答案:

答案 0 :(得分:0)

我没有足够的声誉。所以我无法添加评论。

我猜你的程序没有数据可以返回。

您可以尝试添加

select 'flag' 

在你的程序结束时。

编辑:

我做了一个程序测试:

create PROCEDURE test_procedure(
       OUT totalCount INT
)
BEGIN
  select 1 into totalCount;
  select totalCount;
end

工作正常。

或者您可以使用此:

$sql = $mysqli->query("call test_procedure(@output)");
$results = $mysqli->query ("select @output as totalCount");
希望可以帮助你。