PHP와 AMP 생태계 요약 정리
PHP 장점
- 배우기 쉽다: Java/JSP보다 문법이 간단해 비전공자도 접근 가능.
- 스크립트 기반: 빠르게 프로젝트 개발 가능 → 한 학기 팀 프로젝트에 적합.
- DB 친화적: MySQL, MariaDB, SQLite, Oracle 등 다양한 DB와 쉽게 연동.
- 오픈소스 풍부: 전 세계적으로 예제와 코드 자료가 많음.
AMP / XAMPP / LAMP
- AMP = Apache(웹 서버) + MySQL/MariaDB(DB) + PHP(스크립트).
- 주요 변형:
- XAMPP: Cross-platform (Windows, Mac, Linux 지원).
- WAMP: Windows + AMP.
- LAMP: Linux + AMP.
- MAMP: Mac + AMP.
- 장점: 서버, DB, PHP를 한 번에 설치 가능 → 클릭 몇 번으로 세팅 끝.
MySQL vs MariaDB
- MariaDB는 MySQL의 포크(fork).
- 문법과 API가 거의 동일 → 대부분 호환 가능.
- MariaDB: 더 안정적이고 상용(enterprise) 지향.
- MySQL: 커뮤니티 중심, 학습과 일반 웹 프로젝트에서 많이 사용.
설치 관련 포인트
- 과거: Apache, MySQL, PHP를 따로 설치해야 했음 → 버전 충돌 문제 잦음.
- 현재: XAMPP/WAMP 설치로 해결 → 편리하고 관리 쉬움.
- 버전 호환 중요: PHP 버전 업 시 DB와 충돌 가능성 있음.
Localhost (루프백)
- localhost = 자기 컴퓨터 (IP 주소 127.0.0.1).
- 내 PC에 서버와 클라이언트를 동시에 띄울 수 있음.
- 실제 서버 없이도 웹 브라우저에서 테스트 가능.
주요 도구
- phpMyAdmin
- MySQL/MariaDB 관리 웹 툴.
- 콘솔 명령어보다 직관적 (테이블 생성, SQL 실행, 사용자 관리 가능).
- SQLite
- 가벼운 데이터베이스.
- 시연용/소규모 앱에 적합.
- PHP가 다양한 DB를 지원함을 보여줌
PHP 실습
PHP 기초 복습
- hello.php 파일 → print "Hello World"; 출력
- <?php ... ?> 태그 안에서 PHP 코드 실행
- 웹 서버 폴더(htdocs)에 저장 후 브라우저에서 접근
동적 웹페이지를 위한 사용자 입력
- 단순 출력이 아닌 사용자 입력을 받아야 동적 페이지 가능
- 입력은 보통 HTML Form을 통해 전달됨
<form>
<input type="text" name="name">
<input type="submit" value="전송">
</form>
- name 속성은 입력값을 서버에 전달할 때의 키(key) 역할
클라이언트–서버 연동
- 클라이언트: sendName.html
- 서버: receiveName.php
<form action="receiveName.php" method="post">
<input type="text" name="name">
<input type="submit" value="전송">
</form>
<?php echo $_POST["name"] . " 님 안녕하세요!"; ?>
- $_POST 배열 → 폼에서 넘어온 값 접근
- 예: $_POST["name"] → 사용자가 입력한 값 반환
- 여러 개 입력 가능 (name, professor, singer 등)
MySQL 데이터베이스 연동
- DB 생성
CREATE DATABASE testDB;
- 테이블 생성
CREATE TABLE testTable ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, test VARCHAR(75) NULL );
- PHP에서 DB 연동
<?php $conn = mysqli_connect("localhost", "root", "apmsetup", "testDB");
if (!$conn) { die("DB 연결 실패: " . mysqli_connect_error()); }
$sql = "CREATE TABLE testTable ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, test VARCHAR(75) NULL )";
if (mysqli_query($conn, $sql)) { echo "테이블 생성 성공!"; }
else { echo "에러: " . mysqli_error($conn); } mysqli_close($conn); ?>
- mysqli_connect → DB 접속
- mysqli_query → SQL 실행
- AUTO_INCREMENT → 기본키 자동 증가
- VARCHAR(75) → 문자열 저장 가능
PHP와 MySQL 기본 흐름
- 데이터베이스 연결
- mysqli_connect() 함수를 사용해 DB 연결
- 매개변수: 호스트, 사용자 ID, 비밀번호, DB 이름
- 연결 실패 시 에러 메시지 출력
- 쿼리 실행
- mysqli_query(연결, SQL문) 으로 실행
- INSERT, UPDATE, DELETE 같은 경우 성공 여부만 반환
- SELECT 는 실제 데이터(ResultSet)를 반환
- 연결 종료
- mysqli_free_result() → 쿼리 결과 자원 해제
- mysqli_close() → DB 연결 종료
사용자 입력 처리
SELECT 쿼리 결과 다루기
- mysqli_query() 실행 후 결과 저장
$result = mysqli_query($conn, "SELECT * FROM testtable");
- 결과 개수 확인
$rows = mysqli_num_rows($result); echo "결과는 $rows 행이 있습니다.";
- 결과 반복 출력 (커서 개념)
- mysqli_fetch_array() 또는 mysqli_fetch_assoc() 사용
- 커서(cursor)가 한 행씩 이동하며 데이터를 꺼냄
while ($row = mysqli_fetch_assoc($result))
{ echo "ID: " . $row['id'] . " / Text: " . $row['testcolumn'] . "<br>"; }