请使用MYSQLI_USE_RESULT阐明“命令不同步”

时间:2019-04-08 08:04:36

标签: php mysql

我们在两台服务器上具有相同的代码。使用MYSQLI_USE_RESULT时,该脚本在server1上运行良好,并且在server4上返回“命令不同步”。

我的第一个问题是使用其他任何MySQL命令时是否应该发生“命令不同步”,还是仅在使用同一表的第二个命令时才发生“命令不同步”。我的第二个问题是为什么在不同的服务器上结果会有所不同。

Server1:CentOS Linux 6.7,MySQL版本5.1.73,PHP 5.3.3

Server4:CentOS Linux 7.6.1810,MariaDB [MySQL版本5.5.60],PHP 7.3.3

$sql = "SELECT * FROM alfa" ;
$result = mysql_query_io($sql, MYSQLI_USE_RESULT) ;
while ($row = $result->fetch_assoc()) {

    // more PHP code here

    $sql = "SELECT * FROM beta WHERE pro = '" . $pro . "' AND end >= " . $tempo ;
    $result2 = mysql_query_io($sql) ;
    while ($row2 = $result2->fetch_assoc()) {

        // more PHP code here

    }
}

function mysql_query_io($sql, $method=MYSQLI_STORE_RESULT) {
    // $method is MYSQLI_STORE_RESULT or MYSQLI_USE_RESULT
    global $MYSQLI ;
    if (!$result = $MYSQLI->query($sql, $method)) {
        exit(1) ;
    }
    return $result ;
}

0 个答案:

没有答案