PHP 8.1 에서 MYSQLI DB 콘넥션 할때 예제소스로 die 구문이 뒤에 붙게 되는데요

7버전대에서는 잘 되는거같은데 8.1에서는 연결성공하면 잘 나오고 실패했을때는

에러메세지가 안나옵니다 ㅡㅡ;

 

옵션을 켜줘야되는게 있나요

 

에러메세지 출력등급 설정해줘도 mysql die 구문만은 오류출력이 안되네요

 

※ 참고로 라이믹스 관련은 아니고

일반 기본코딩 관련 질문입니다.

  • profile

    $conn = mysqli_connect(...) or die(...);

     

    20여전 전에 흔히 사용하던 이런 코딩 패턴을 말씀하시는 거라면, PHP 8.1에서는 DB 접속 실패시 false를 반환하지 않고 Exception을 던져버리기 때문에 or절로 들어가지 않습니다. 물론 Exception을 캐치하지 않으면 죽으니까, 내가 원하는 에러메시지가 나오지 않는다는 것을 빼면 프로그램이 죽는 것은 똑같다는...

    제대로 에러처리 하지 않고 die로 퉁치는 소스는 이제 곱게 접어 분리수거함에 넣을 때가 되었지요? ㅎㅎ

  • profile profile

    네 그소스가 맞습니다.

    8.1에서 오류처리하는 예제가 있을까요

    오류시 '연결실패' 정도 출력가능하면 될거같습니다.


    최근꺼는 자료가 별로 안보이네요

  • profile profile

    https://www.php.net/manual/en/language.exceptions.php
    https://dev.epiloum.net/1140

    어느 언어나 예외처리는 try ~ catch ~ 문을 사용하는게 정석입니다.
    try문 가운데 예외가 발생할수 있는 가능성이 있는 작업(DB 연결 등)을 넣고 catch문에서 예외 발생시 처리를 해주면 됩니다.

    php 5.1.0 이상부터 지원하는 구문이지만... 요즘은 php7도 지원이 되네 마네 하는 세상이니 크게 중요하진 않습니다.

     

    p.s.) 이건 크게 중요하지 않은 내용입니다만... 라이믹스도 기존 return new Object(-1, "메세지") 형태의 오류처리를 예외를 발생시킨뒤 이걸 catch하는 방식으로 변경하고 있습니다.

  • profile profile

    정보 감사합니다.
    알려주신 방식은 대형코드에 적합할듯 하군요.

    소규모 제작건이라 코드 예외가 소량입니다.
    한두줄로 가능한 방법이 있을까요

  • profile profile
    대형코드 소형코드... 구분하지 않습니다. 한줄짜리도 try ~ catch ~ 로 예외처리합니다.
    코드가 길어진다고 나쁜 코드라는것도 예전 이야기입니다. 요즘은 기능 하나 구현한다고 몇십줄의 코드를 사용하기도 합니다.
  • profile profile
    예. 저는 쇼트코드가 좋아서 될수있으면 줄이는 편입니다만
    요즘같이 여유용량 많을때는 정석으로 쓰는것도 괜찮겠네요.
  • profile profile
    굳이 짧게 쓰시려면
    try { mysqli_connect(...) } catch (...) { die(...); }
    모두 한 줄에 쓰는 방법도 있긴 하죠. ㅎㅎ
  • profile profile
    아 한줄로가도 try catch 들어가야 나오나보네요 8버전은
    감사합니다