当前位置: 首页 > 面试题库 >

命令不同步;您现在不能运行此命令

于捷
2023-03-14
问题内容

我正在尝试执行我的PHP代码,该代码通过mysqli调用两个MySQL查询,并得到错误“命令不同步;您现在不能运行此命令”。

这是我正在使用的代码

<?php
$con = mysqli_connect("localhost", "user", "password", "db");
if (!$con) {
    echo "Can't connect to MySQL Server. Errorcode: %s\n". Mysqli_connect_error();
    exit;
}
$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
}  else {

print_r($con->error);
}
foreach ($rows as $row) {
    $pk = $row['ARTICLE_NO'];
    echo '<tr>' . "\n";
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['USERNAME'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="updateByPk(\'Layer2\', \'' . $pk . '\')">'.$row['shortDate'].'</a></td>' . "\n";
    echo '<td><a href="#" onclick="deleterec(\'Layer2\', \'' . $pk . '\')">DELETE RECORD</a></td>' . "\n";
    echo '</tr>' . "\n";
}
function getRowsByArticleSearch($searchString, $table, $max) {
    $con = mysqli_connect("localhost", "user", "password", "db");
    $recordsQuery = "SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME, date_format(str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s'), '%d %m %Y' ) AS shortDate FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE '%?%' ORDER BY str_to_date(ACCESSSTARTS, '%d/%m/%Y %k:%i:%s')" . $max;
    if ($getRecords = $con->prepare($recordsQuery)) {
        $getRecords->bind_param("s", $searchString);
        $getRecords->execute();
        $getRecords->bind_result($ARTICLE_NO, $USERNAME, $ACCESSSTARTS, $ARTICLE_NAME, $shortDate);
        while ($getRecords->fetch()) {
            $result = $con->query($recordsQuery);
            $rows = array();
            while($row = $result->fetch_assoc()) {
                $rows[] = $row;
            }
            return $rows;
        }
    }
}

我曾尝试阅读此书,但不确定该怎么做。我已经阅读了有关存储结果和免费结果的信息,但是使用它们时并没有什么区别。我不确定此错误的确切原因,并想知道其原因以及如何解决。

按照我的调试语句,由于我的sql语法near附近,甚至没有输入countQuery的第一个if循环'% ? %'。但是,如果我只是选择*而不是尝试根据LIKE子句进行限制,则仍然会出现命令不同步错误。


问题答案:

您不能同时进行两个查询,因为mysqli默认情况下使用无缓冲查询(对于预准备语句;对于vanilla则相反mysql_query)。您可以将第一个取入数组并循环遍历,也可以告诉mysqli缓冲查询(使用$stmt->store_result())。

有关详细信息,请参见此处。



 类似资料:
  • 问题内容: 我已经将注册脚本从mysql转换为mysqli。我作为mysql正常工作,但是现在却给我错误 这是我用来注册用户的功能 电子邮件可以很好地发送来自我的阵列的正确数据。但是,没有数据插入到数据库中,并且出现了上面提到的错误。我以前从未遇到过这个错误。 问题答案: 如果 命令不同步; 您现在无法在客户端代码中运行此命令,您以错误的顺序调用了客户端函数。 例如,如果您使用的是mysql_us

  • 问题内容: 我有一个从Python(包装在Django中)执行的MySQL存储过程。当我尝试执行第二条语句时,出现错误“命令不同步;您现在不能运行此命令”。我目前无法提交交易。当我调用过程时,这只是一个问题。该怎么办? 编辑:我被要求发布MySQL过程。我使它变得非常简单,但我仍然遇到相同的问题 问题答案: 感谢JoshuaBoshi的回答,该问题得以解决。调用该过程之后,我必须关闭游标并再次打开

  • 问题内容: 在我的数据库中,我有一些存储过程。 我想给其中一个打个电话,根据我从此过程中得到的结果,我将确定是否要打第二个天气。 如您所见,我使用的方法 但是仍然在调用其他过程时得到: 这是我对db函数的调用: 问题答案: 每个存储过程至少返回 两个 结果 一个(或多个)实际结果 一个空结果告诉客户没有其他结果。 您必须使用/ 清洁它们。 如果您的过程仅返回一个结果,或者您只想要第一个结果,而不想

  • 我正在使用MySQL,我正在定义一个存储过程,如下所示: 当我尝试执行该过程时,会出现以下错误: 这意味着什么,我做错了什么?

  • 问题内容: 以下代码,使用python 2.6.6和MySQLdb 1.2.2导致 命令不同步; 您不能立即运行此命令 MySQLdb异常: 在执行第二个查询期间引发异常。如我所读,异常通常是由MySQL的C API实现的限制引起的,该限制不允许并发查询执行。 如果我在上述两个查询之间重新创建游标对象,则会解决此问题,但不幸的是,该解决方案对我而言似乎并不完美。对于数据库连接和查询执行,我有一个非

  • 我在运行命令flutter run--release时会出现很多错误。 颤振医生-V