개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.19 15:36

mysqli_stmt::$error_list와 연관된 오류 메시지 이해하기

목록
  • 버전컨트롤러 14일 전 2025.05.19 15:36 인기
  • 175
    1
제가 mysqli_stmt::$error_list를 사용하여 MySQL 쿼리문에 오류가 발생했을 때 에러 메시지를 출력하려고 하는데, 오류 메시지가 너무 복잡한데 어떻게 해야하나요?

예를들어, 아래와 같은 쿼리문이 있다고 가정해 보겠습니다.

php

$stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ? AND age = ?");

$stmt->bind_param("si", $name, $age);



위 쿼리문에서 만약 name이 NULL값으로 들어가게 되면, 에러 메시지가 다음과 같이 출력될 것입니다.

php

array (

  0 => 'SQLSTATE[22004]: Invalid input: 1690 Parameter 1 of prepared statement requires a value of type int or string but got type NULL'

)



이러한 오류 메시지를 mysqli_stmt::$error_list를 사용하여 더 읽기 쉬운 형태로 출력하고 싶은데, 어떻게 해야하나요?

위 오류 메시지에서 'Parameter 1 of prepared statement requires a value of type int or string but got type NULL' 이라는 부분이 실제 오류 메시지이지만, mysqli_stmt::$error_list를 사용하여 출력할 때, 다음과 같이 출력되도록 하고 싶은데 어떻게 해야하나요?

php

array (

  0 => 'name 파라미터는 int 또는 string 형식의 값이 필요합니다. NULL 값을 읽어들입니다.'

)


    댓글목록

    profile_image
    나우호스팅  14일 전



    mysqli_stmt::$error_list를 사용하여 MySQL 쿼리문에 오류가 발생했을 때 에러 메시지를 출력할 때, 복잡한 오류 메시지를 더 읽기 쉬운 형태로 출력하고 싶을 때는 다음과 같이 할 수 있습니다.

    1. 오류 메시지를 분석하여 필요한 정보만 추출합니다.
    2. 추출한 정보를 사용하여 더 읽기 쉬운 형태의 오류 메시지를 생성합니다.

    예를 들어, 위 쿼리문에서 name이 NULL값으로 들어가게 되면, 에러 메시지가 다음과 같이 출력될 것입니다.

    #hostingforum.kr
    php
    
    array (
    
      0 => 'SQLSTATE[22004]: Invalid input: 1690 Parameter 1 of prepared statement requires a value of type int or string but got type NULL'
    
    )
    
    


    위 오류 메시지를 mysqli_stmt::$error_list를 사용하여 더 읽기 쉬운 형태로 출력하고 싶다면, 다음과 같이 할 수 있습니다.

    #hostingforum.kr
    php
    
    $errorList = $stmt->error_list;
    
    $errorMessage = $errorList[0];
    
    
    
    // 오류 메시지를 분석하여 필요한 정보만 추출합니다.
    
    $parameterNumber = explode('Parameter ', $errorMessage)[1];
    
    $parameterNumber = explode(' of prepared statement', $parameterNumber)[0];
    
    
    
    // 추출한 정보를 사용하여 더 읽기 쉬운 형태의 오류 메시지를 생성합니다.
    
    $errorMessage = "Parameter $parameterNumber는 int 또는 string 형식의 값이 필요합니다. NULL 값을 읽어들입니다.";
    
    
    
    print_r(array($errorMessage));
    
    


    위 코드를 실행하면, 다음과 같이 출력될 것입니다.

    #hostingforum.kr
    php
    
    array (
    
      0 => 'Parameter 1는 int 또는 string 형식의 값이 필요합니다. NULL 값을 읽어들입니다.'
    
    )
    
    


    위 코드는 오류 메시지를 분석하여 필요한 정보만 추출하고, 추출한 정보를 사용하여 더 읽기 쉬운 형태의 오류 메시지를 생성합니다.

    2025-05-19 15:37

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 24,682건 / 236 페이지

검색

게시물 검색