코딩 스쿨 PHP

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

PHP MySQL Create DB

PHP로 MySQL 데이터베이스 생성하기 (Create Database)


PHP를 사용하여 MySQL 데이터베이스를 생성하려면, PHP와 MySQL을 연결한 후, SQL 쿼리를 통해 데이터베이스를 생성하는 방법을 사용할 수 있습니다. 이 작업은 MySQLi 또는 PDO 라이브러리를 사용하여 수행할 수 있습니다.

이 가이드에서는 PHP와 MySQL을 연동하여 데이터베이스를 생성하는 방법, MySQLiPDO를 사용한 예제, 그리고 데이터베이스 생성 후 상태 확인 방법을 다룹니다.


1. 데이터베이스 생성(SQL 쿼리)

데이터베이스를 생성하기 위해 MySQL에서 사용하는 SQL 쿼리는 다음과 같습니다:

CREATE DATABASE database_name;

이 쿼리는 **database_name**이라는 이름의 새 데이터베이스를 생성합니다.


2. MySQLi를 사용한 데이터베이스 생성

2.1 객체 지향 방식으로 데이터베이스 생성

<?php
// MySQL 연결 정보
$host = "localhost";
$username = "root";
$password = "";

// MySQL 데이터베이스 연결
$conn = new mysqli($host, $username, $password);

// 연결 확인
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 데이터베이스 생성 SQL 쿼리
$sql = "CREATE DATABASE my_new_database";

// 데이터베이스 생성 시도
if ($conn->query($sql) === TRUE) {
    echo "Database created successfully";
} else {
    echo "Error creating database: " . $conn->error;
}

// 연결 종료
$conn->close();
?>

설명:

  • new mysqli(): MySQLi 객체를 사용하여 MySQL 서버에 연결합니다.
  • $conn->query(): SQL 쿼리를 실행하여 데이터베이스를 생성합니다.
  • 연결 정보는 데이터베이스 자체가 아닌 MySQL 서버에 대한 정보를 사용하며, 연결 후 데이터베이스를 생성하는 쿼리를 실행합니다.
  • $conn->close(): 연결을 종료합니다.

2.2 절차적 방식으로 데이터베이스 생성

<?php
// MySQL 연결 정보
$host = "localhost";
$username = "root";
$password = "";

// MySQL 데이터베이스 연결
$conn = mysqli_connect($host, $username, $password);

// 연결 확인
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// 데이터베이스 생성 SQL 쿼리
$sql = "CREATE DATABASE my_new_database";

// 데이터베이스 생성 시도
if (mysqli_query($conn, $sql)) {
    echo "Database created successfully";
} else {
    echo "Error creating database: " . mysqli_error($conn);
}

// 연결 종료
mysqli_close($conn);
?>

설명:

  • mysqli_connect(): MySQLi를 절차적 방식으로 사용하여 MySQL 서버에 연결합니다.
  • mysqli_query(): SQL 쿼리를 실행하여 데이터베이스를 생성합니다.
  • *mysqli_connect_error()*와 mysqli_error(): 연결과 쿼리 실행 시 오류가 발생하면 해당 오류 메시지를 출력합니다.

3. PDO를 사용한 데이터베이스 생성

PDO는 여러 데이터베이스를 지원하는 범용적인 데이터베이스 연결 인터페이스로, MySQL뿐만 아니라 다른 데이터베이스 시스템과도 연동할 수 있습니다.

<?php
// 데이터베이스 연결 정보
$host = "localhost";
$username = "root";
$password = "";

try {
    // PDO 객체 생성 및 MySQL 서버 연결
    $pdo = new PDO("mysql:host=$host", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 데이터베이스 생성 SQL 쿼리
    $sql = "CREATE DATABASE my_new_database";
    // 쿼리 실행
    $pdo->exec($sql);

    echo "Database created successfully";
} catch (PDOException $e) {
    echo "Error creating database: " . $e->getMessage();
}
?>

설명:

  • new PDO(): PDO 객체를 생성하고 MySQL 서버에 연결합니다. dbname 파라미터를 지정하지 않고 서버에 연결한 후 데이터베이스를 생성합니다.
  • $pdo->exec(): 쿼리를 실행하고 데이터베이스를 생성합니다.
  • *PDOException*을 사용해 데이터베이스 생성 중 발생한 오류를 처리할 수 있습니다.

4. 데이터베이스 생성 후 상태 확인

데이터베이스가 성공적으로 생성되었는지 확인하기 위해서는 PHP에서 제공하는 쿼리 실행 결과를 통해 확인할 수 있습니다. MySQLiPDO에서 성공적으로 데이터베이스가 생성되면 성공 메시지가 출력되며, 실패할 경우 오류 메시지가 반환됩니다.


5. 보안 고려 사항

5.1 SQL 인젝션 방지

데이터베이스 생성은 보통 정적 쿼리이기 때문에 SQL 인젝션의 위험이 크지 않습니다. 그러나 사용자의 입력에 따라 데이터베이스 이름을 동적으로 생성할 경우, SQL 인젝션 방지를 위해 항상 파라미터화된 쿼리를 사용하는 것이 좋습니다.

5.2 데이터베이스 이름 유효성 검사

데이터베이스 이름을 동적으로 생성하는 경우, 사용자가 제공한 데이터베이스 이름이 올바른 형식인지 확인하는 유효성 검사를 하는 것이 중요합니다. 예를 들어, 공백이나 특수 문자가 포함되지 않도록 해야 합니다.

<?php
$dbname = preg_replace("/[^a-zA-Z0-9_]/", "", $_POST['dbname']);
$sql = "CREATE DATABASE $dbname";

이 코드는 데이터베이스 이름알파벳, 숫자, 밑줄만 허용하고, 그 외의 문자는 제거합니다.


요약

PHP를 사용하여 MySQL 데이터베이스를 생성하려면 MySQLi 또는 PDO 라이브러리를 사용할 수 있습니다. 두 방법 모두 PHP에서 MySQL 데이터베이스에 연결한 후, SQL 쿼리를 실행하여 새로운 데이터베이스를 생성합니다. PDO는 여러 데이터베이스 시스템을 지원하며, MySQLi는 MySQL 전용입니다. 데이터베이스를 생성할 때는 보안 고려 사항유효성 검사도 함께 고려해야 합니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com