inflearn logo
강의

講義

知識共有

PHP 7+ プログラミング

52 - ブートストラップ (Bootstrap)

DB_CONNECTION 부분 질문

267

nak512

投稿した質問数 5

0

php

回答 1

0

pronist

안녕하세요!

연결에 성공한 경우 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

nak512

답변 감사드립니다.
위의 코드로 진행하였을 때 저 같은 경우에는 계속해서 GLOBAL['DB_CONNECTION'] 부분에 true 값이 들어가 있더라구요. mysqli 인스턴스가 없어서 이후 동작을 수행하지 못하고 에러를 발생시켰습니다.

문제가 의심되는 부분이 위의 코드 부분이여서 mysqli_connect 부분과 exit를 분리(따로 처리) 하니 정상적으로 mysqli 인스턴스가 GLOBAL['DB_CONNECTION'] 부분에 할당되었습니다. php 8.x 버전을 사용하고 있어서 그런가 해서 php 문서를 찾아보니 버전과 상관없이 mysqli_connect를 사용해서 연결에 성공하면 mysqli 인스턴스가 할당되고 실패하면 false가 떨어진다고 되어 있더라구요.

아직까지 원인을 모르겠습니다. 혹시 짐작 가시는 부분이 있으실까요?

0

pronist

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