我正在使用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);
}
答案 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");
希望可以帮助你。