mysqli->query();有时有效


mysqli->query(); works sometimes

我这里有一种问题,我不知道如何解决它......谷歌什么也没说,这里的搜索功能也没有向我显示任何东西......

我使用此代码

$GAME_DB = new mysqli($__CONFIG['MySQL']['HOST'], $__CONFIG['MySQL']['USER'], $__CONFIG['MySQL']['PASS'], $__CONFIG['MySQL']['DB']['GAME']);
if($GAME_DB->connect_errno) { echo $GAME_DB->connect_error; exit; }
$VILLAGE_DATA['villageID'] = $mysqli->real_escape_string($VILLAGE_DATA['villageID']);
$query = "SELECT name, level, time FROM actions WHERE type='build' AND villageID='".$VILLAGE_DATA['villageID']."'";
if($result = $GAME_DB->query($query))
    {
    // table header
    while($row = $result->fetch_row())
        {
        // some rows in here
        }
    // table footer
    }

该查询中没有任何语法错误,结果在那里!有时查询成功,我看到我的表,但有时(例如:当我重新加载时)我收到错误消息Commands out of sync; you can't run this command now

这怎么能"有时"起作用? 我的问题在哪里?

http://dev.mysql.com/doc/refman/5.6/en/commands-out-of-sync.html

如果命令不同步;现在无法在 中运行此命令 您的客户端代码,您以错误的顺序调用客户端函数。

例如,如果您使用 mysql_use_result() 并且 尝试在调用 mysql_free_result() 之前执行新查询。 如果您尝试执行两个返回数据的查询,也会发生这种情况 无需在两者之间调用 mysql_use_result() 或 mysql_store_result()。

但是从您发布的代码中,我看不出这是怎么发生的。要么代码比你发布的代码多,要么发生乱序的事情,要么你的MySQL连接被不正确地建立/池化/持久化在PHP之外的某个地方。