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

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

苏鸿羽
2023-03-14
问题内容

我已经将注册脚本从mysql转换为mysqli。我作为mysql正常工作,但是现在却给我错误

Commands out of sync; you can't run this command now

这是我用来注册用户的功能

function register_user($register_data) { 
global $myConnection;
array_walk($register_data, 'array_sanitize'); 
//Make the array readable and seperate the fields from data 
$fields = '`' . implode('`, `', array_keys($register_data)) . '`'; 
$data = '\'' . implode('\', \'', $register_data) . '\''; 
//Insert the data and email an activation email to the user 
mysqli_query($myConnection, "INSERT INTO `members` ($fields) VALUES ($data)") or die(mysqli_error($myConnection)); 
email($register_data['mem_email'], 'Activate your account', "Hello " . $register_data['mem_first_name'] . ",\n\nThank you for creating an account with H Fencing. Please use the link below to activate your account so we can confirm you identity:\n\nhttp://blah.blah.co.uk/activate.php?mem_email=" . $register_data['mem_email'] . "&email_code=" . $register_data['email_code'] . "\n\n - David & Jay "); 
}

电子邮件可以很好地发送来自我的阵列的正确数据。但是,没有数据插入到数据库中,并且出现了上面提到的错误。我以前从未遇到过这个错误。


问题答案:

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

例如,如果您使用的是mysql_use_result()并尝试执行新查询,然后再调用mysql_free_result(),则可能发生这种情况。如果您尝试执行两个返回数据的查询,而没有在两者之间调用mysql_use_result()或mysql_store_result(),也会发生这种情况。

从这里:http :
//dev.mysql.com/doc/refman/5.0/en/commands-out-of-
sync.html

更新资料

如果将a用作查询变量,然后将该变量直接粘贴到类似MySQL Workbench的内容中,则可以在执行之前检查语法。

<?php
            function myConnection(){
              $myConnection = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
              return $myConnection;
            }


    function register_user($register_data) { 
        array_walk($register_data, 'array_sanitize'); 
        //Make the array readable and seperate the fields from data 
        $fields = '`' . implode('`, `', array_keys($register_data)) . '`'; 
        $data = "'" . implode("', '", $register_data) . "'"; 
        //Insert the data and email an activation email to the user 
        $query = "INSERT INTO `members` ($fields) VALUES ($data)";
                    $myNewConnection = myConnection();

                    if($result = mysqli_query($myNewConnection, $query)){ 
        email($register_data['mem_email'], 'Activate your account', "Hello " . $register_data['mem_first_name'] . ",\n\nThank you for creating an account with H Fencing. Please use the link below to activate your account so we can confirm you identity:\n\nhttp://blah.blah.co.uk/activate.php?mem_email=" . $register_data['mem_email'] . "&email_code=" . $register_data['email_code'] . "\n\n - David & Jay "); 
        mysqli_free_result($result);
         return ("Success");
        } else {
            echo $query;
            die(mysqli_error($myNewConnection));
        }

    }

?>


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

  • 问题内容: 我正在尝试执行我的PHP代码,该代码通过mysqli调用两个MySQL查询,并得到错误“命令不同步;您现在不能运行此命令”。 这是我正在使用的代码 我曾尝试阅读此书,但不确定该怎么做。我已经阅读了有关存储结果和免费结果的信息,但是使用它们时并没有什么区别。我不确定此错误的确切原因,并想知道其原因以及如何解决。 按照我的调试语句,由于我的sql语法near附近,甚至没有输入countQu

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

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

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

  • 问题内容: 我正在尝试运行以下内容。 如果我删除以下行: 至.... 一切都会正常。如果没有,我得到以下错误: 命令不同步; 您现在不能运行此命令 在研究,我认为这可能是由于多个库MySQLi查询同时运行,其中使用但在所有样品和通用数据导向似乎并不适用。 有任何想法吗? 问题答案: MySQL客户端不允许您执行新的查询,在该查询中仍需要从正在进行的查询中获取行。有关常见错误,请参见MySQL文档中