DB_CONNECTION 부분 질문
267
5 asked
- - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
안녕하세요, 선생님.
$GLOBALS['DB_CONNECTION'] = mysqli_connect('localhost','root','qhscjs1!2@','blog') || exit;
위와 같이 할 경우 접속에 성공했다면 DB_CONNECTION에 true가 입력 되는거 아닌지요? - - 먼저 유사한 질문이 있었는지 검색해보세요.
- - 서로 예의를 지키며 존중하는 문화를 만들어가요.
- - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
Answer 1
0
안녕하세요!
연결에 성공한 경우 true 가 아니라 mysqli 인스턴스가 할당됩니다. 추후에 쿼리를 쏠 때 사용된답니다. 예를 들면 다음과 같이 말이죠! 아직 객체지향은 배우시지 않으셨을 테지만, 연결이 성공된다면 별 다른 문제없이 쿼리가 처리 될 것입니다.
$conn = mysqli_connect(
'homestead.test',
'homestead',
'secret',
'homestead'
);
assert( $conn instanceof mysqli );
$r = mysqli_query($conn, 'SELECT * FROM migrations');
while ($obj = mysqli_fetch_object($r)) {
assert( $obj instanceof stdClass );
}
그러나 연결이든 어떤 문제가 발생하면 mysqli_sql_exception 이 발생합니다. try ~ catch 로 따라서 잡을 수 있습니다. 이 내용은 그다지 중요하지 않으므로 지금 이해되지 않아도 괜찮습니다.
try {
$conn = mysqli_connect(
...
);
} catch (mysqli_sql_exception $e) {
error_log( $e->getMessage() );
}
0
답변 감사드립니다.
위의 코드로 진행하였을 때 저 같은 경우에는 계속해서 GLOBAL['DB_CONNECTION'] 부분에 true 값이 들어가 있더라구요. mysqli 인스턴스가 없어서 이후 동작을 수행하지 못하고 에러를 발생시켰습니다.
문제가 의심되는 부분이 위의 코드 부분이여서 mysqli_connect 부분과 exit를 분리(따로 처리) 하니 정상적으로 mysqli 인스턴스가 GLOBAL['DB_CONNECTION'] 부분에 할당되었습니다. php 8.x 버전을 사용하고 있어서 그런가 해서 php 문서를 찾아보니 버전과 상관없이 mysqli_connect를 사용해서 연결에 성공하면 mysqli 인스턴스가 할당되고 실패하면 false가 떨어진다고 되어 있더라구요.
아직까지 원인을 모르겠습니다. 혹시 짐작 가시는 부분이 있으실까요?
0
true 값이 할당되는 경우라 ... 그 이유는 아마 || 연산자 때문일 것입니다. 연결에 성공해서 mysqli_connect() 가 mysqli 인스턴스를 반환하면 논리 연산자의 경우 true 로 취급됩니다.
이를테면 다음과 같이 비어있지 않은 문자열은 true , 비어있으면 false 로 취급합니다. 그렇기 때문에 true 로 처리 된 것입니다.
var_dump( 'Hello, world' || null ); // true
var_dump( '' || null ); // false
이 처리는 사실 언어마다 다릅니다. 이를테면 자바스크립트의 경우 똑같은 코드임에도 결과값이 다릅니다. 이러한 방식을 가르키는 이름이 있었던 것 같은데.. 저도 일단 까먹었지만 언어마다 다르다는 점을 주의해주세요.
console.log( 'Hello, world' || null ); // Hello, world
console.log( '' || null ); // null
53강 레이아웃에서 css git 링크 관련 질문입니다.
0
35
2
[섹션 5]레포지토리 소스파일 오류 위치, 수정 제안
0
180
1
add configuratio.. 자체에
0
268
2
터미널에 글이 안써집니다.
0
635
1
일반적으로 쓰이지 않는 폰트 부분
0
465
1
readmore 클릭시 쿼리내용 받아오는게 이해가 안되요
0
497
1
$_GET과 $_POST를 구별하여야한다고 하는데 이건 왜 $_GET입니까 콜백이라서 그런가요? 왜콜백은 그래도 되나요?
0
475
1
xdebug 설치가 안됩니다.
0
401
1
xdebug 설치 확인 페이지가 안열립니다
0
360
1
if ~ elseif ~ else 문법 표준적인 코딩 방법에 대한 질문입니다.
1
523
1
mysqli_stmt_close($stmt) 관련 질문드립니다.
0
319
1
FILTER_VALIDATE FILTER_SANITIZE 차이를 모르겠습니다.
0
296
1
결과 ...
0
244
1
random_bytes
0
319
1
preg_replace_callback 질문드립니다.
0
437
1
호스팅에 php 코드 업로드하면 hash 로직이 보이진 않을까요?
0
266
1
버퍼링 궁금한 점이 있습니다.
0
287
1
restore_include_path 오류
0
316
1
php 에러발생..
0
3759
3
터미널로 php 실행시 document root 지정
0
244
1
posts가 null이라고 나옵니다.
0
209
2
rand() vs random_int() 차이점?
0
520
1
php 8 로 하시는 분들을 위한 ini 팁
1
513
1
xdebug 뭔짓을해도 안됩니다
0
219
1

