Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

PHP 스크립트로 MySQL 테이블 생성하는 방법 완벽 가이드

PHP에서는 mysql_query() 함수를 사용해 MySQL 테이블을 생성할 수 있습니다. 이 함수에 SQL의 CREATE TABLE 문을 전달하면, PHP 스크립트만으로 데이터베이스에 새로운 테이블을 만들 수 있습니다.

기본 동작 흐름

PHP 스크립트로 MySQL 테이블을 생성하는 과정은 일반적으로 다음 순서로 진행됩니다.

1. 데이터베이스 연결 – 호스트, 사용자명, 비밀번호를 사용해 MySQL 서버에 접속합니다.
2. 데이터베이스 선택 – 테이블을 생성할 대상 데이터베이스를 지정합니다.
3. SQL 쿼리 실행 – CREATE TABLE 문을 mysql_query() 함수로 실행합니다.
4. 결과 확인 및 연결 종료 – 성공 여부를 확인한 뒤 연결을 닫습니다.

예제: 'tutorials_tbl' 테이블 생성하기

아래 예제는 PHP 스크립트를 이용해 tutorials_tbl이라는 이름의 테이블을 생성하는 전체 코드입니다.

<html>
   <head>
      <title>Creating MySQL Tables</title>
   </head>
   <body>
      <?php
      $dbhost = 'localhost:3036';
      $dbuser = 'root';
      $dbpass = 'rootpassword';
      $conn = mysql_connect($dbhost, $dbuser, $dbpass);
      
      if(! $conn ) {
        die('Could not connect: ' . mysql_error());
      }
      echo 'Connected successfully<br />';
      $sql = "CREATE TABLE tutorials_tbl( ".
        "tutorial_id INT NOT NULL AUTO_INCREMENT, ".
        "tutorial_title VARCHAR(100) NOT NULL, ".
        "tutorial_author VARCHAR(40) NOT NULL, ".
        "submission_date DATE, ".
        "PRIMARY KEY ( tutorial_id )); ";
      mysql_select_db( 'TUTORIALS' );
      $retval = mysql_query( $sql, $conn );
      
      if(! $retval ) {
        die('Could not create table: ' . mysql_error());
      }
      echo "Table created successfully\n";
      mysql_close($conn);
   ?>
  </body>
</html>

코드 설명

1. 데이터베이스 연결

mysql_connect() 함수에 호스트 주소, 사용자명, 비밀번호를 인자로 전달하여 MySQL 서버에 접속합니다. 연결에 실패하면 die() 함수가 실행되어 오류 메시지와 함께 스크립트가 종료됩니다.

2. 테이블 구조 정의

생성되는 tutorials_tbl 테이블은 다음과 같은 컬럼으로 구성됩니다.

- tutorial_id: INT 타입의 기본 키(PK)로, NOT NULL 제약 조건과 함께 AUTO_INCREMENT가 설정되어 있어 새 레코드가 추가될 때마다 자동으로 1씩 증가합니다.
- tutorial_title: 최대 100자까지 저장할 수 있는 VARCHAR 타입으로, NULL 값을 허용하지 않습니다.
- tutorial_author: 최대 40자까지 저장할 수 있는 VARCHAR 타입으로, 마찬가지로 NOT NULL 제약 조건이 적용됩니다.
- submission_date: 제출 날짜를 저장하는 DATE 타입 컬럼입니다.

3. 쿼리 실행 및 결과 처리

mysql_select_db()로 작업 대상 데이터베이스('TUTORIALS')를 선택한 후, mysql_query() 함수로 CREATE TABLE 문을 실행합니다. 반환값이 false이면 테이블 생성에 실패한 것이므로 오류 메시지를 출력하고, 성공하면 완료 메시지를 출력한 뒤 mysql_close()로 연결을 종료합니다.

참고: mysql 확장 모듈은 더 이상 사용되지 않습니다

위 예제에 사용된 mysql_* 계열 함수는 PHP 5.5부터 공식적으로 지원 중단(deprecated)되었으며, PHP 7부터는 완전히 제거되었습니다. 따라서 실제 프로젝트에서는 보안과 유지보수 측면에서 다음과 같은 대체 방식을 사용하는 것이 좋습니다.

- MySQLi 확장: mysqli_connect(), mysqli_query() 등을 사용하며 절차적 방식과 객체 지향 방식을 모두 지원합니다.
- PDO(PHP Data Objects): MySQL뿐 아니라 다양한 데이터베이스를 일관된 인터페이스로 다룰 수 있어 코드 이식성이 뛰어납니다.

두 방식 모두 준비된 문(Prepared Statement)을 지원하므로 SQL 인젝션 공격을 효과적으로 방어할 수 있다는 장점도 있습니다.