본문 바로가기
MySql

MySQL MySqli 명령이 동기화되지 않았습니다. 지금이 명령을 실행할 수 없습니다.

by 베이스 공부 2021. 1. 7.
반응형

등록 스크립트를 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 ()를 호출하지 않고 데이터를 반환하는 두 개의 쿼리를 실행하려고 할 때도 발생할 수 있습니다.

여기에서:


업데이트

쿼리에 대한 변수를 만들고 변수를 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));
        } 

    }

?>  

 

참조 페이지 https://stackoverflow.com/questions/15798762

 

 

반응형

댓글