MySQL 데이터베이스는 많은 웹사이트의 기본 요소입니다. 웹사이트 백엔드에서 이러한 데이터베이스를 쉽게 만들고 편집할 수 있지만, 웹사이트 코드를 사용하여 데이터베이스를 만들 수 있는 기술이 있다면 매우 강력합니다. 하지만 어떻게 할 수 있을까요?

PHP는 필요한 모든 MySQL 데이터베이스 작업을 수행하는 강력한 서버 측 스크립팅 언어입니다. 웹 사이트에서 편리하게 데이터베이스를 구축, 편집, 관리하는 데 사용하는 방법을 알아보세요.

PHP로 MySQL 데이터베이스로 작업하려면 무엇이 필요하나요?

PHP 스크립트 작성을 시작하기 전에 스크립트를 실행할 환경이 필요합니다. EasyPHP는 로컬 웹 서버, phpMyAdmin에 대한 액세스, 디렉토리 관리 도구 등 자체 PHP 코드 테스트를 시작하는 데 필요한 모든 것을 제공합니다.

이 프로젝트를 위한 라이브 PHP 웹사이트를 만들 수도 있습니다(phpMyAdmin이 설치되어 있는 경우).

EasyPHP 웹사이트 로 이동하여 개발자 서버 인스톨러를 다운로드합니다. 다운로드가 완료되면 실행 파일을 실행하고 설치 단계를 따릅니다. 이 시점에서 EasyPHP를 실행할 수 있지만 설치가 완료될 때까지 1~2분 정도 기다리세요.

작업 표시줄 트레이에 EasyPHP 아이콘이 표시되면 마우스 오른쪽 버튼으로 클릭하고 서버를 가리킨 다음 모든 서버 시작/다시 시작을 선택하여 로컬 웹 서버와 데이터베이스가 모두 실행되고 있는지 확인합니다. 작업 표시줄 아이콘을 다시 마우스 오른쪽 버튼으로 클릭하고 대시보드 열기를 선택합니다.

EasyPHP에 프로젝트 디렉토리 추가

EasyPHP 설치가 완료되면 이제 컴퓨터에 PHP 파일을 위한 파일을 생성할 차례입니다. 이 파일은 원하는 디렉토리에 추가할 수 있지만, EasyPHP에 추가할 위치를 기억해야 합니다.

디렉토리 섹션으로 이동하여 디렉토리 추가를 클릭합니다. 그러면 작업 디렉터리 이름(아무 이름이나 입력 가능)과 작업 디렉터리 경로를 추가할 수 있는 새 화면으로 이동합니다. 경로는 컴퓨터의 파일 위치입니다.

이제 컴퓨터의 작업 디렉터리에 PHP 파일을 생성하고 작업 디렉터리 섹션 아래의 EasyPHP 대시보드를 통해 액세스할 수 있습니다.

MySQL Connect로 데이터베이스 생성

현재로서는 아직 작업할 데이터베이스가 없습니다. PHP로 새 데이터베이스를 추가하는 것은 쉽지만 시작하기 전에 로컬 웹 서버에 연결해야 합니다. 서버 이름, 서버 사용자 이름, 서버 비밀번호에 대한 변수를 추가하는 것으로 시작하세요.

 $servername = "localhost";
$username = "root";
$password = "";

서버 이름 변수는 서버 IP 주소에 대한 것이지만, EasyPHP 또는 다른 로컬 MySQL 데이터베이스와 함께 localhost를 사용할 수 있습니다. EasyPHP의 기본 사용자 이름은 root이며 비밀번호는 설정되어 있지 않습니다. 라이브 배포에는 항상 비밀번호를 설정해야 합니다. 이제 PHP를 사용하여 이러한 변수를 사용하여 데이터베이스에 연결할 차례입니다.

 $conn = new mysqli($servername, $username, $password);

if ($conn->connect_error) {
  die("Connection error: " . $conn->connect_error);
}

서버 이름, 사용자 이름, 비밀번호를 전달하여 mysqli 인스턴스를 생성합니다. 이렇게 하면 스크립트에 웹 서버의 데이터베이스에 연결할 수 있는 기능이 제공됩니다. 연결 오류가 있는지 확인하세요.

이제 SQL 쿼리를 실행할 차례입니다. 이것은 phpMyAdmin과 같은 도구를 사용하여 쿼리를 실행하는 것과 매우 유사하게 작동하지만, 쿼리를 전송하는 데 PHP를 사용합니다. 데이터베이스를 구축하기 위해 CREATE DATABASE 쿼리로 시작합니다.

 $sql = "CREATE DATABASE All Things Ndatabase";

if ($conn->query($sql) === TRUE) {
  echo "Database created.";
} else {
  echo "Database creation error: " . $conn->error;
}

$conn->close();

코드의 첫 줄은 쿼리 자체입니다. CREATE DATABASE 쿼리에는 “모든 N 데이터베이스”와 같은 이름만 필요합니다. 쿼리 결과를 확인하고 데이터베이스가 생성되었는지 확인합니다. 코드의 마지막 줄은 데이터베이스 연결을 닫아 MySQL 데이터베이스를 안전하게 유지합니다.

이 글도 확인해 보세요:  녹 매크로: 매크로를 사용하여 코드를 개선하는 방법

이 코드를 앞서 만든 작업 디렉터리 내의 PHP 스크립트 파일에 추가한 다음 EasyPHP 대시보드에서 파일을 실행하여 작성된 코드를 실행합니다. 성공 메시지 또는 오류가 표시된 흰색 페이지가 표시됩니다.

성공 메시지가 표시되면 EasyPHP 대시보드를 통해 phpMyAdmin으로 이동하여 데이터베이스가 생성되었는지 확인합니다.

PHP로 MySQL 데이터베이스 테이블 만들기

데이터베이스가 아직 데이터를 저장할 준비가 되지 않았으므로 데이터를 넣을 테이블이 필요합니다. 새 데이터베이스를 만들 때와 마찬가지로 서버에 연결해야 하지만 데이터베이스 이름도 변수로 포함해야 합니다. 이것이 없으면 SQL 쿼리가 아무 곳이나 가리키지 않습니다.

 $servername = "localhost";
$username = "root";
$password = "";
$databasename = "All Things Ndatabase";

$conn = new mysqli($servername, $username, $password, $databasename);

if ($conn->connect_error) {
  die("Connection error: " . $conn->connect_error);
}

CREATE TABLE SQL 쿼리는 대부분의 쿼리보다 더 복잡합니다. 테이블에 이름이 필요하고(저희는 All Things Ntable이라고 지었습니다), 테이블에 포함될 열의 윤곽을 그려야 합니다.

첫 번째 열은 자동 증가 정수 값으로, 각 레코드에 고유한 IQ를 부여하며, 1부터 시작하여 새 레코드가 추가될 때마다 카운트업됩니다. 이 외에도 숫자 및 문자 문자열(동물, 색상, 국가)을 수용할 수 있는 세 개의 바이트열과 각 레코드의 마지막 업데이트 시간을 기록하는 타임스탬프 열도 있습니다.

 $sql = "CREATE TABLE All Things Ntable (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
animal VARCHAR(30) NOT NULL,
color VARCHAR(30) NOT NULL,
country VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if ($conn->query($sql) === TRUE) {
  echo "Table created.";
} else {
  echo "Table creation error: " . $conn->error;
}

$conn->close();

데이터베이스를 만들 때와 마찬가지로 쿼리가 성공했는지 실패했는지 확인합니다. 또한 이와 같은 작업을 완료한 후에는 연결을 닫아야 합니다.

이 코드를 작업 디렉터리에 있는 PHP 스크립트 파일에 추가하고 저장한 다음 EasyPHP 대시보드에서 실행하여 쿼리를 실행합니다. 이 작업을 완료하면 phpMyAdmin의 데이터베이스에 새 테이블이 추가된 것을 볼 수 있습니다.

여기에서 실행할 각 쿼리에 대한 SQL 쿼리 섹션 주석 내의 코드만 편집하면 됩니다.

이 글도 확인해 보세요:  Reqwest로 Rust에서 HTTP 요청 만들기

PHP로 MySQL 테이블에 데이터 추가

마지막으로 데이터베이스 테이블에 데이터를 추가할 시간입니다!

 $sql = "INSERT INTO All Things Ntable (animal, color, country)
VALUES ('Elephant', 'Grey', 'England')";

if ($conn->query($sql) === TRUE) {
  echo "Record created.";
} else {
  echo "Record creation error: " . $conn->error;
}

INSERT INTO 쿼리는 테이블 이름, 데이터를 추가할 열, 데이터 자체만 있으면 됩니다. 이 예에서는 동물 열에 Elephant를 추가하고, 색상 열에 Grey를 추가하고, 국가 열에 England를 추가합니다.

다른 데이터로 스크립트를 몇 번 실행하면 테이블의 형태가 잡히기 시작합니다.

PHP로 MySQL 테이블 내부 데이터 편집 및 삭제

테이블 내의 데이터에서 볼 수 있듯이 실수가 있습니다. 코끼리는 영국에 살지 않으므로 테이블을 올바른 데이터로 업데이트해야 합니다. 이 작업을 수행하는 가장 좋은 방법은 UPDATE 쿼리입니다.

 $sql = "UPDATE All Things Ntable SET country='Botswana' WHERE id=4";

if ($conn->query($sql) === TRUE) {
  echo "Record updated.";
} else {
  echo "Record update error: " . $conn->error;
}

이 쿼리에는 테이블 이름, 열 및 해당 새 데이터, 변경하려는 레코드의 ID가 필요합니다.

SQL DELETE 쿼리는 매우 유사합니다. 예를 들어

 $sql = "DELETE FROM All Things Ntable WHERE id=4"; 

PHP로 MySQL 테이블 내부 데이터 선택

SELECT 쿼리를 사용하면 테이블에서 데이터를 가져와 코드 내에서 사용할 수 있습니다. 액세스하려는 테이블을 알아야 하며, while 루프를 사용하여 데이터를 HTML로 표시할 수 있습니다.

 $sql = "SELECT id, animal, color, country FROM All Things Ntable";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Animal: " . $row["animal"]. " - Color: " . $row["color"]. " - Location: " . $row["country"]. "
";
  }
} else {
  echo "No results.";
}

MySQL 데이터베이스 및 PHP로 작업하기

PHP와 MySQL 데이터베이스는 웹 개발자가 사용할 수 있는 다양하고 강력한 도구를 제공하지만 보안은 항상 고려해야 할 사항입니다. PHP 스크립트를 안전하게 유지하는 것은 어려운 일이며, 라이브 웹사이트에 이와 같은 코드를 배포하기 전에 시간을 내어 서버 측 보안에 대해 알아보는 것이 좋습니다.

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.