반응형
등록 스크립트를 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
반응형
'MySql' 카테고리의 다른 글
MySQL Node.js에서 SQL 주입 방지 (0) | 2021.01.07 |
---|---|
MySQL은 구분 기호를 사용하여 저장 프로 시저 구문을 만듭니다. (0) | 2021.01.07 |
MySQL Python MySQL 이스케이프 특수 문자 (0) | 2021.01.07 |
MySQLi를 사용하여 MySQL 데이터베이스에 행 삽입 (0) | 2021.01.07 |
MySQL 너무 많은 MySQL 데이터베이스를 삭제 한 후 XAMPP를 수정하는 방법은 무엇입니까? (0) | 2021.01.07 |
댓글