PHP MySQL 연동 확인 - PHP MySQL yeondong hwag-in

PHP MySQL 설치후 연동 테스트 코드 +  실행화면

윈도우 환경에서 Apache + PHP + MySql 을 설치 한뒤
성공적으로 연동이 되어 돌아가는지 확인하기 위한 코드와 그 결과화면입니다.

[PHP 작동테스트용 페이지]

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>PHP 테스트</title>
</head>
<body>
 
 <?php 
    echo '<p>Hello PHP</p>';
    echo "PHP 버전 :" . phpversion();
    phpinfo();
?> 
 
</body>
</html>

[PHP-MySql 연동테스트용 페이지]

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <title>MySql-PHP 연결 테스트</title>
</head>
<body>
 
<?php
echo "MySql 연결 테스트<br>";
 
$db = mysqli_connect("localhost", "root", "비밀번호", "world");
 
if($db){
    echo "connect : 성공<br>";
}
else{
    echo "disconnect : 실패<br>";
}
 
$result = mysqli_query($db, 'SELECT VERSION() as VERSION');
$data = mysqli_fetch_assoc($result);
echo $data['VERSION'];
?>
 
</body>
</html>

[결과화면]

PHP MySQL 연동 확인 - PHP MySQL yeondong hwag-in

글을 쓰기 전에 내가 설치한 php와 MySQL 버전, 편집기는 다음과 같다.

그리고 php, MySQL 설치 과정은 생략한다.

php : 7.3.3

MySQL : 8.0.15

편집기 : 아톰 + phpstorm(둘 중 아무거나 써도 됨. 편의성은 phpstorm)

php와 MySQL을 연동시켜 회원가입 기능을 구현하기 전, 내가 원하는 문구를 띄워 제대로 DB와 연동됐고 내가 원하는 DB와도 연결이 성공적으로 됐는지 확인할 일이 생겼다.

아톰에 아래와 같은 코드를 쳤다. 파일명은 적당히 test.php로 한다.

<?php
$db_con = mysqli_connect("localhost", "root", "터미널에서 MySQL 들어갈 때 치는 비밀번호");
if ($db_con){
  echo "DB 연결 성공<p>";
} else {
  echo "DB 연결 실패<p>";
}
  
$db_sec = mysqli_select_db($db_con, "연결을 확인하고 싶은 데이터베이스명");
if ($db_sec) {
  echo "DB select OK <p>";
} else {
  echo "DB select NO <p>"
}

?>

if문 안에 있는 $db_con 변수의 값에 따라 DB 연결의 성공 여부, $db_sec 변수의 값에 따라 선택한 DB와 연결 성공 여부를 확인해 웹 페이지 상에 출력하는 코드다.

$db_con은 mysqli_connect()의 리턴값을 담는 변수다.

주의할 것은 php 7 버전부터는 mysql_connect()를 치면 안된다. mysqli_connect() 함수를 사용해야 한다.

참고문서 : https://www.php.net/manual/en/mysqli.select-db.php

PHP: mysqli::select_db - Manual

query("SELECT DATABASE()")) {    $row = $result->fetch_row();    printf("Default database is %s.\n", $row[0]);    $result->close();}/* change db to world db */$mysqli->select_db("world");/* return name of current default database */if ($result = $mysqli->q

www.php.net

그리고 mysqli_select_db() 안의 인자들의 순서들도 신경써야 한다. 큰따옴표가 $db_con보다 먼저 나올 경우 에러가 뜨면서 DB select NO 문구가 나오게 된다. 꼭 $db_con 변수를 앞에 둬야 한다.

echo는 큰따옴표 안의 문장을 출력시키는 php 문법 중 하나다.

잘 연동됐다면 아래와 같은 결과가 출력되야 한다.

PHP MySQL 연동 확인 - PHP MySQL yeondong hwag-in

위 문구가 나왔다면 php와 MySQL이 제대로 연동됐다는 뜻이고, 내가 선택한 DB와의 연결도 잘 이뤄졌다는 뜻이다.

PHP 8.0, MySQL 8.0 에서 테스트 시 정상 동작 하는것 확인했습니다.

# vi dbtest.php

<?php
$conn = mysqli_connect("192.168.2.10", "sysdocu", "12345678", "sysdocu");

 if ($conn) {
    echo "MySQL 연결 성공";
} else {
    echo "MySQL 연결 실패";
}

 $result = mysqli_query($conn, "SELECT VERSION() AS VERSION");
$data = mysqli_fetch_assoc($result);
echo $data['VERSION'];
?>

Bitnami로 APM(Apache, PHP, MySQL) 환경을 세팅해줬습니다. PHP+MySQL 조합으로 connect, select, insert 예제를 간단하게 작성해봤습니다. 

1. PHP MySQL 접속

<?php
    $host = "localhost";
    $user = "root";
    $pw = "password";
    $dbName = "DB명";

    $conn = new mysqli($host, $user, $pw, $dbName);
    
    /* DB 연결 확인 */
    if($conn){ echo "Connection established"."<br>"; }
    else{ die( 'Could not connect: ' . mysqli_error($conn) ); }
    
    mysqli_close($conn);
?>

2. PHP MySQL SELECT 예제

<?php
    $host = "localhost";
    $user = "root";
    $pw = "password";
    $dbName = "DB명";

    $conn = new mysqli($host, $user, $pw, $dbName);
    
    /* DB 연결 확인 */
    if($conn){ echo "Connection established"."<br>"; }
    else{ die( 'Could not connect: ' . mysqli_error($conn) ); }
    
    /* SELECT 예제 */
    $sql = "SELECT * FROM 테이블명";
    $result = mysqli_query($conn, $sql);
    while($row = mysqli_fetch_array($result)){
        echo $row['컬럼명']." ".$row['컬럼명']."<br>";
    }
    
    mysqli_close($conn);
?>

SELECT 구문으로 DB의 값을 가져온 뒤, echo로 데이터를 출력합니다. 

3. PHP MySQL INSERT 예제

<?php
    date_default_timezone_set('Asia/Seoul');

    $host = "localhost";
    $user = "root";
    $pw = "password";
    $dbName = "DB명";

    $conn = new mysqli($host, $user, $pw, $dbName);

    /* DB 연결 확인 */
    if($conn){ echo "Connection established"."<br>"; }
    else{ die( 'Could not connect: ' . mysqli_error($conn) ); }

    /* INSERT 예제 */
    $sql = "INSERT INTO DB명(column명, column명) VALUES('데이터','데이터')";
    $result = mysqli_query($conn, $sql);
 	
    if($result) { echo "insert success!"; }
    else { echo "failure"; }
    
    mysqli_close($conn);
?>

INSERT 구문으로 DB에 데이터를 밀어넣습니다. 성공했다면 $result=1, 실패했다면 $result=0입니다. if 구문으로 성공했는지, 실패했는지 출력하도록 만들었습니다 :)

이번에 테스트하면서 중간에 Internal Server Error가 계속 떠서 삽질을 많이 했습니다. 확인해보니 DB명을 잘못 작성한 에러였는데, 크롬 콘솔에서는 GET http://localhost:8080/dbtest.php 500 (Internal Server Error)만 출력되서 뭐가 문제인지 확인이 어려웠습니다. 다행히 error log를 통해 DB명을 잘못 작성했다는걸 알게 되었습니다.

PHP MySQL 연동 확인 - PHP MySQL yeondong hwag-in
error_log

Bitnami에서는 Manage Servers>configure>Open Error Log를 통해서 에러 로그를 확인할 수 있었습니다. 똑같이 따라했는데도 Internal Server Error 에러가 나시는 분들은 에러 로그를 확인해보세요 :)


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다 :D