일자 : 24-2 12주차 2차시 (3)
<?php
$servername = "localhost"; // 데이터베이스 서버 이름 (로컬 서버)
$username = "root"; // 데이터베이스 사용자 이름
$password = ""; // 데이터베이스 사용자 비밀번호
$dbname = "myDB"; // 사용할 데이터베이스 이름
// 데이터베이스 연결 생성
$conn = new mysqli($servername, $username, $password, $dbname); // MySQLi 객체를 사용하여 데이터베이스에 연결
// 연결 확인
if ($conn->connect_error) { // 연결에 오류가 있는지 확인
die("Connection failed: " . $conn->connect_error); // 연결 실패 시 오류 메시지 출력 후 종료
}
// 여러 개의 SQL 쿼리 정의 (INSERT 문 여러 개)
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com');"; // 첫 번째 레코드 삽입
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Mary', 'Moe', 'mary@example.com');"; // 두 번째 레코드 삽입
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Julie', 'Dooley', 'julie@example.com')"; // 세 번째 레코드 삽입
// 여러 개의 SQL 쿼리 실행
if ($conn->multi_query($sql) === TRUE) { // multi_query()를 사용해 여러 SQL 쿼리를 실행
echo "New records created successfully"; // 레코드 삽입 성공 시 메시지 출력
} else {
echo "Error: " . $sql . "<br>" . $conn->error; // 삽입 실패 시 오류 메시지 출력
}
$conn->close(); // 데이터베이스 연결 종료
?>
여러 레코드를 한 번에 삽입하기 위해 multi_query를 사용하여 여러 INSERT 문을 실행하는 코드입니다.
<?php
$servername = "localhost"; // 데이터베이스 서버 이름 (로컬 서버)
$username = "root"; // 데이터베이스 사용자 이름
$password = ""; // 데이터베이스 사용자 비밀번호 (빈 문자열)
$dbname = "myDB"; // 사용할 데이터베이스 이름
// 데이터베이스 연결 생성
$conn = new mysqli($servername, $username, $password, $dbname); // MySQLi 객체를 사용하여 데이터베이스에 연결
// 연결 확인
if ($conn->connect_error) { // 연결에 오류가 있는지 확인
die("Connection failed: " . $conn->connect_error); // 연결 실패 시 오류 메시지 출력 후 종료
}
// SQL 쿼리 정의: MyGuests 테이블에 새로운 레코드 삽입
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')"; // 'John', 'Doe', 'john@example.com' 값을 MyGuests 테이블에 삽입
// SQL 쿼리 실행 및 결과 확인
if ($conn->query($sql) === TRUE) { // 쿼리 실행 후 성공 여부 확인
$last_id = $conn->insert_id; // 삽입된 레코드의 마지막 ID를 가져옴
echo "New record created successfully. Last inserted ID is: " . $last_id; // 새 레코드 삽입 성공 시 ID 출력
} else {
echo "Error: " . $sql . "<br>" . $conn->error; // 삽입 실패 시 오류 메시지 출력
}
$conn->close(); // 데이터베이스 연결 종료
?>
마지막으로 삽입된 레코드의 AUTO_INCREMENT ID를 insert_id 속성을 사용하여 가져오는 코드입니다.
동일하거나 유사한 SQL 문을 반복적으로 실행할 때 높은 효율성을 위해 사용되는 기능이다.파싱 시간을 줄여준다.SQL 인젝션에 매우 유용하다.<?php
$servername = "localhost"; // 데이터베이스 서버 이름 (로컬 서버)
$username = "username"; // 데이터베이스 사용자 이름
$password = "password"; // 데이터베이스 사용자 비밀번호
$dbname = "myDB"; // 사용할 데이터베이스 이름
// 데이터베이스 연결 생성
$conn = new mysqli($servername, $username, $password, $dbname); // MySQLi 객체를 사용하여 데이터베이스에 연결
// 연결 확인
if ($conn->connect_error) { // 연결에 오류가 있는지 확인
die("Connection failed: " . $conn->connect_error); // 연결 실패 시 오류 메시지 출력 후 종료
}
// 준비된 문(Prepared Statement)과 바인딩
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"); // MyGuests 테이블에 값을 삽입하기 위한 준비된 SQL 쿼리
$stmt->bind_param("sss", $firstname, $lastname, $email); // 파라미터 바인딩 (문자열 형식 "sss"로 $firstname, $lastname, $email 변수와 연결)
// 파라미터 설정 후 실행
$firstname = "John"; // 첫 번째 레코드의 첫 번째 이름 설정
$lastname = "Doe"; // 첫 번째 레코드의 성 설정
$email = "john@example.com"; // 첫 번째 레코드의 이메일 설정
$stmt->execute(); // 첫 번째 레코드 삽입
$firstname = "Mary"; // 두 번째 레코드의 첫 번째 이름 설정
$lastname = "Moe"; // 두 번째 레코드의 성 설정
$email = "mary@example.com"; // 두 번째 레코드의 이메일 설정
$stmt->execute(); // 두 번째 레코드 삽입
$firstname = "Julie"; // 세 번째 레코드의 첫 번째 이름 설정
$lastname = "Dooley"; // 세 번째 레코드의 성 설정
$email = "julie@example.com"; // 세 번째 레코드의 이메일 설정
$stmt->execute(); // 세 번째 레코드 삽입
echo "New records created successfully"; // 새로운 레코드가 성공적으로 삽입되었음을 출력
$stmt->close(); // 준비된 문 종료
$conn->close(); // 데이터베이스 연결 종료
?>
SQL 인젝션을 방지하고 효율적인 쿼리 실행을 위해 Prepared Statement를 사용하여 값을 바인딩하고 실행하는 코드입니다.
SELECT column_name(s) FROM table_name
* 문자를 사용하여 테이블의 모든 열을 선택할 수 있다.SELECT * FROM table_name
<?php
$servername = "localhost"; // 데이터베이스 서버 이름 (로컬 서버)
$username = "username"; // 데이터베이스 사용자 이름
$password = "password"; // 데이터베이스 사용자 비밀번호
$dbname = "myDB"; // 사용할 데이터베이스 이름
// 데이터베이스 연결 생성
$conn = new mysqli($servername, $username, $password, $dbname); // MySQLi 객체를 사용하여 데이터베이스에 연결
// 연결 확인
if ($conn->connect_error) { // 연결에 오류가 있는지 확인
die("Connection failed: " . $conn->connect_error); // 연결 실패 시 오류 메시지 출력 후 종료
}
// SQL 쿼리 정의: MyGuests 테이블에서 id, firstname, lastname 컬럼을 조회
$sql = "SELECT id, firstname, lastname FROM MyGuests"; // SELECT 쿼리로 MyGuests 테이블에서 데이터를 가져옴
$result = $conn->query($sql); // 쿼리 실행 후 결과를 $result 변수에 저장
// 쿼리 결과가 존재하는지 확인
if ($result->num_rows > 0) { // 결과가 하나 이상 있으면
// 각 행(row)의 데이터를 출력
while($row = $result->fetch_assoc()) { // 결과에서 각 행을 연관 배열 형태로 가져옴
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; // 각 행의 id, firstname, lastname 출력
}
} else {
echo "0 results"; // 결과가 없으면 "0 results" 출력
}
$conn->close(); // 데이터베이스 연결 종료
?>
SELECT 문을 사용하여 MySQL 데이터베이스에서 특정 테이블의 데이터를 조회하고 출력하는 코드입니다.
SLECT column_name(s) FROM table_name ORDER BY column_name(s) ASC | DESC
<?php
$servername = "localhost"; // 데이터베이스 서버 이름 (로컬 서버)
$username = "username"; // 데이터베이스 사용자 이름
$password = "password"; // 데이터베이스 사용자 비밀번호
$dbname = "myDB"; // 사용할 데이터베이스 이름
// 데이터베이스 연결 생성
$conn = new mysqli($servername, $username, $password, $dbname); // MySQLi 객체를 사용하여 데이터베이스에 연결
// 연결 확인
if ($conn->connect_error) { // 연결에 오류가 있는지 확인
die("Connection failed: " . $conn->connect_error); // 연결 실패 시 오류 메시지 출력 후 종료
}
// SQL 쿼리 정의: MyGuests 테이블에서 id, firstname, lastname 컬럼을 조회하고, lastname을 기준으로 정렬
$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname"; // SELECT 쿼리로 MyGuests 테이블에서 데이터를 가져오고, lastname으로 오름차순 정렬
$result = $conn->query($sql); // 쿼리 실행 후 결과를 $result 변수에 저장
// 쿼리 결과가 존재하는지 확인
if ($result->num_rows > 0) { // 결과가 하나 이상 있으면
// 각 행(row)의 데이터를 출력
while($row = $result->fetch_assoc()) { // 결과에서 각 행을 연관 배열 형태로 가져옴
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; // 각 행의 id, firstname, lastname 출력
}
} else {
echo "0 results"; // 결과가 없으면 "0 results" 출력
}
$conn->close(); // 데이터베이스 연결 종료
?>
ORDER BY 절을 사용하여 특정 컬럼을 기준으로 결과를 오름차순 또는 내림차순으로 정렬하는 코드입니다.
DELETE FRO table_name`
WHERE some_column = some_value
<?php
$servername = "localhost"; // 데이터베이스 서버 이름 (로컬 서버)
$username = "root"; // 데이터베이스 사용자 이름
$password = ""; // 데이터베이스 사용자 비밀번호
$dbname = "myDB"; // 사용할 데이터베이스 이름
// 데이터베이스 연결 생성
$conn = new mysqli($servername, $username, $password, $dbname); // MySQLi 객체를 사용하여 데이터베이스에 연결
// 연결 확인
if ($conn->connect_error) { // 연결에 오류가 있는지 확인
die("Connection failed: " . $conn->connect_error); // 연결 실패 시 오류 메시지 출력 후 종료
}
// SQL 쿼리 정의: MyGuests 테이블에서 id가 3인 레코드를 삭제
$sql = "DELETE FROM MyGuests WHERE id=3"; // id가 3인 레코드를 삭제하는 쿼리
// 쿼리 실행 및 결과 확인
if ($conn->query($sql) === TRUE) { // 쿼리 실행 후 성공 여부 확인
echo "Record deleted successfully"; // 레코드 삭제가 성공하면 메시지 출력
} else {
echo "Error deleting record: " . $conn->error; // 삭제 실패 시 오류 메시지 출력
}
$conn->close(); // 데이터베이스 연결 종료
?>
DELETE 문을 사용하여 특정 조건에 맞는 레코드를 삭제하는 코드입니다.
UPDATE table_name
SET column1=value, colum2=value2, ...
WHERE some_column = some_value
<?php
$servername = "localhost"; // 데이터베이스 서버 이름 (로컬 서버)
$username = "root"; // 데이터베이스 사용자 이름
$password = ""; // 데이터베이스 사용자 비밀번호
$dbname = "myDB"; // 사용할 데이터베이스 이름
// 데이터베이스 연결 생성
$conn = new mysqli($servername, $username, $password, $dbname); // MySQLi 객체를 사용하여 데이터베이스에 연결
// 연결 확인
if ($conn->connect_error) { // 연결에 오류가 있는지 확인
die("Connection failed: " . $conn->connect_error); // 연결 실패 시 오류 메시지 출력 후 종료
}
// SQL 쿼리 정의: MyGuests 테이블에서 id가 2인 레코드의 lastname을 'Doe'로 업데이트
$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2"; // id가 2인 레코드의 lastname을 'Doe'로 변경
// 쿼리 실행 및 결과 확인
if ($conn->query($sql) === TRUE) { // 쿼리 실행 후 성공 여부 확인
echo "Record updated successfully"; // 레코드 업데이트가 성공하면 메시지 출력
} else {
echo "Error updating record: " . $conn->error; // 업데이트 실패 시 오류 메시지 출력
}
$conn->close(); // 데이터베이스 연결 종료
?>
UPDATE 문을 사용하여 특정 조건에 맞는 레코드의 데이터를 수정하는 코드입니다.

