본문 바로가기
MySql

MySQL mysqli_query insert success and throws error

by 베이스 공부 2020. 10. 30.
반응형

이 문제는 저를 당혹스럽게했습니다. db에 데이터를 성공적으로 삽입하지만 응답으로 오류가 발생하는 간단한 mysqli 쿼리가 있습니다.

쿼리 등을 매개 변수화해야한다는 것을 알고 있습니다. 이것은 단지 테스트 실행 일뿐입니다.

$query = "INSERT INTO user(user_id,subdomain) VALUES ('$user_id','$subdomain')";

$sql = mysqli_query($conn, $query);

실행시 다음 (가독성을 위해 형식이 지정됨) 오류가 발생합니다.

오류 : 1 INSERT INTO user (user_id, subdomain) VALUES ( 'abcdefgh | 123456', 'abcd') SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 1 행의 '1'근처에서 사용할 올바른 구문을 확인하십시오.

하지만 db를 확인하면 데이터가 제대로 삽입됩니다.

테이블 스키마는 다음과 같습니다.

user

Column          Type         Null   Default
id (Primary)    int(50)      No              
user_id         varchar(50)  No              
subdomain       varchar(30)  No              
modified        timestamp    No     CURRENT_TIMESTAMP        

여기서 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까?

수정 : 코드 추가

$host = 'localhost';
$user = 'root';
$pass = 'mysql';
$db = 'localauth0';
$conn = mysqli_connect($host, $user, $pass, $db);
mysqli_set_charset($conn, "utf8");

$user_id = mysqli_real_escape_string($conn, $_POST['user_id']);
$subdomain = mysqli_real_escape_string($conn, $_POST['storeSubdomain']);

// $query = "INSERT INTO user (user_id,subdomain) VALUES ('$user_id','$subdomain')";
$query = "INSERT INTO user(user_id,subdomain) VALUES ('".$user_id."','".$subdomain."')";

$sql = mysqli_query($conn, $query);

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $query . "<br>" . $conn->error;
}

$conn->close();

exit();

 

해결 방법

 

문제는 다음과 같습니다.

$sql = mysqli_query($conn, $query);

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $query . "<br>" .$conn->error;
}

mysqli_query를 두 번 호출하면 첫 번째가 레코드를 삽입합니다.

$sql = mysqli_query($conn, $query);

두 번째로 "1"문자열에 대한 쿼리 만 실행하지만 오류 보고서는 문제를보고하기 위해 잘못된 항목을 연결합니다.

어때

$result = mysqli_query($conn, $query);

if ($result) {
    echo "New record created successfully";
} else {
    echo "Error: " .  . "<br>" .  mysqli_error($conn);
}

 

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

 

 

반응형

댓글