mysqli_result ::免费不工作,仍然得到"命令不同步"错误

时间:2015-08-03 23:51:33

标签: php mysqli

我对mysqli_result::free有疑问。我以为我理解它是如何工作的,但我仍然会遇到错误。 这是代码。我知道它并不完美,但请在回答主要问题后对其中的任何其他缺陷进行评论:

$config = parse_ini_file('../config.ini', true);
$mysqli = new mysqli($config['database']['host'], $config['database']['user'], $config['database']['password'], $config['database']['database']);

if($mysqli->connect_errno > 0) {
    die('Unable to connect to database ['. $mysqli->connect_error .']');
}

$sql = 'CALL Stored_Procedure()';

if(!$result = $mysqli->query($sql)) {
    die('There was an error running the query ['. $mysqli->error .']');
} else {
    $array = $result->fetch_all(MYSQLI_ASSOC);
}

foreach($array as $row) {
    //Do something with each row of the result array
}

$result->free();

$sql = 'CALL Other_Stored_Procedure()';

if(!$result = $mysqli->query($sql)) {
    die('There was an error running the query ['. $mysqli->error .']');
} else {
    $array = $result->fetch_all(MYSQLI_ASSOC);
}

foreach($array as $row) {
    //Do something with each row of the result array
}

$result->free();
$mysqli->close();

我得到了There was an error running the query [Commands out of sync; you can't run this command now]

在第二次查询时出现

错误,即使我已经解除了结果。我知道mysqli_result::free方法有效,因为当我做这样的事情时

$result->free();
$result->free();

我得到了mysqli_result::free(): Couldn't fetch mysqli_result

我知道我的程序每个只返回一个结果。

所以主要问题是: 为什么我得到"命令不同步"错误吗

当我调用返回多个结果的过程时,我也有类似的问题。然后我不得不使用mysqli::next_result方法一次额外的时间来进行进一步的查询。如果有人也知道这个问题的答案,我将不胜感激。

[补充] 好的,所以在评论和更多测试中进行头脑风暴后我会有更多的知识。我注意到的是,与此过程中的代码相比,存储过程会返回一个额外的结果。我通过mysqli::multi_query执行查询来检查它。最后(在我的示例中)结果mysqli::more_results返回true,但下一个结果为空。有人知道为什么吗? [/补充]

0 个答案:

没有答案