์จ๋ผ์ธ ๊ฐ์
>PHP - ์ค๊ธ
๐ PHP ์ค๊ธ - 3์ฃผ์ฐจ: ๊ฒ์ํ CRUD ๊ตฌํ (๊ธฐ๋ณธ) - 02 ๊ธ ๋ชฉ๋ก, ๊ธ ์์ฑ, ๊ธ ๋ณด๊ธฐ, ๊ธ ์์ , ๊ธ ์ญ์
์๋ฃ ๊ธฐ๋ณธ์ ๋ณด
์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
- ๋ผ์ด์ ์ค: free
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
- ์กฐํ: 171
- ๋ค์ด: 1
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
- ๋ฑ๋ก์ผ: 2025-07-22 10:28:44
- ์ค๋ช
๐ PHP ์ค๊ธ - 3์ฃผ์ฐจ: ๊ฒ์ํ CRUD ๊ตฌํ (๊ธฐ๋ณธ) - 02 ๊ธ ๋ชฉ๋ก, ๊ธ ์์ฑ, ๊ธ ๋ณด๊ธฐ, ๊ธ ์์ , ๊ธ ์ญ์
์๋ ํ์ธ์! ์ง๋์ฃผ์ ์ด์ด ์ด๋ฒ ์ฃผ์๋ #PHP #๊ฒ์ํ ๊ตฌํ์ ํต์ฌ์ธ #CRUD ๊ธฐ๋ฅ์ ํจ๊ป ๋ง๋ค์ด ๋ณผ ๊ฑฐ์์. #CRUD๋ Create(์์ฑ), Read(์ฝ๊ธฐ), Update(์์ ), Delete(์ญ์ )์ ์ฝ์๋ก, ๋๋ถ๋ถ์ #๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ ์๋น์ค์์ ๊ธฐ๋ณธ์ด ๋๋ ๊ธฐ๋ฅ์ด์ฃ .
1. ๊ฐ์ ๋ฐ ๋ชฉํ
์ด๋ฒ ์ฃผ์ฐจ์์๋ ๊ฐ๋จํ #๊ฒ์ํ์ ๋ง๋ค์ด์ #๋ฐ์ดํฐ๋ฒ ์ด์ค์ #๊ธ์ ์ ์ฅํ๊ณ , ์ฝ๊ณ , ์์ ํ๊ณ , ์ญ์ ํ๋ ๊ณผ์ ์ #PHP ์ฝ๋๋ก ์ง์ ๊ตฌํํด ๋ณผ ๊ฑฐ์์. #ํ๋ก ํธ์๋ ๋์์ธ๋ณด๋ค๋ #๋ฐฑ์๋ #๋ก์ง ๊ตฌํ์ ์ด์ ์ ๋ง์ถฅ๋๋ค.
์ฃผ์ ๋ชฉํ:
#๊ธ ๋ชฉ๋ก(#Read ๊ธฐ๋ฅ์ ์ผ๋ถ) ํ์
#๊ธ ์์ฑ(#Create ๊ธฐ๋ฅ) ํผ ๋ฐ ์ฒ๋ฆฌ
#๊ธ ๋ณด๊ธฐ(#Read ๊ธฐ๋ฅ) ์์ธ ํ์ด์ง
#๊ธ ์์ (#Update ๊ธฐ๋ฅ) ํผ ๋ฐ ์ฒ๋ฆฌ
#๊ธ ์ญ์ (#Delete ๊ธฐ๋ฅ) ์ฒ๋ฆฌ
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋น
๊ฐ์ฅ ๋จผ์ #๊ฒ์ํ #๊ธ์ ์ ์ฅํ #๋ฐ์ดํฐ๋ฒ ์ด์ค #ํ
์ด๋ธ์ด ํ์ํด์. #MySQL์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํ ๊ฒ์. board๋ผ๋ ์ด๋ฆ์ #ํ
์ด๋ธ์ ๋ง๋ค๊ณ ๋ค์์ฒ๋ผ ํ๋๋ฅผ ๊ตฌ์ฑํด ๋ณด์ธ์.
SQL
CREATE TABLE board (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
author VARCHAR(100) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
id: ๊ฐ #๊ธ์ ๊ณ ์ ๋ฒํธ (๊ธฐ๋ณธ ํค, ์๋ ์ฆ๊ฐ)title: #๊ธ์ ์ ๋ชฉcontent: #๊ธ์ ๋ด์ฉauthor: #์์ฑ์created_at: #๊ธ์ด ์์ฑ๋ ์๊ฐupdated_at: #๊ธ์ด ๋ง์ง๋ง์ผ๋ก ์์ ๋ ์๊ฐ
3. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ค์
#PHP ์คํฌ๋ฆฝํธ์์ #๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ธฐ ์ํ ์ค์ ํ์ผ(db_config.php ๋ฑ์ผ๋ก ์ ์ฅ)์ ๋ง๋ค์ด ์ฃผ์ธ์.
PHP
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// ์ ํ์ : PDO ๊ธฐ๋ณธ ํ์น ๋ชจ๋ ์ค์ (์ฐ๊ด ๋ฐฐ์ด)
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
// echo "๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ฑ๊ณต!"; // ํ
์คํธ์ฉ
} catch(PDOException $e) {
die("๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์คํจ: " . $e->getMessage());
}
?>
4. ๊ธ ๋ชฉ๋ก ๋ณด๊ธฐ (list.php)
์ด์ #๊ฒ์ํ์ #๊ธ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง๋ฅผ ๋ง๋ค ๊ฑฐ์์.
PHP
query("SELECT COUNT(*) FROM board");
$total_posts = $total_posts_stmt->fetchColumn();
$total_pages = ceil($total_posts / $posts_per_page);
// ๊ฒ์๊ธ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ (์ต์ ๊ธ๋ถํฐ, ํ์ด์ง๋ค์ด์
์ ์ฉ)
$stmt = $conn->prepare("SELECT id, title, author, created_at FROM board ORDER BY created_at DESC LIMIT :offset, :limit");
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':limit', $posts_per_page, PDO::PARAM_INT);
$stmt->execute();
$posts = $stmt->fetchAll();
} catch(PDOException $e) {
echo "์ค๋ฅ: " . $e->getMessage();
$posts = []; // ์ค๋ฅ ์ ๋น ๋ฐฐ์ด๋ก ์ด๊ธฐํ
}
?>
๊ฒ์ํ ๊ธ ๋ชฉ๋ก
๊ฒ์ํ ๊ธ ๋ชฉ๋ก
ID
์ ๋ชฉ
์์ฑ์
์์ฑ์ผ
0): ?>
์์ง ์์ฑ๋ ๊ธ์ด ์์ต๋๋ค.
5. ๊ธ ์์ฑ (write.php)
#์๋ก์ด #๊ธ์ ์์ฑํ ์ ์๋ ํผ๊ณผ ์ ์ถ ์ #๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ #๋ก์ง์ด์์.
PHP
prepare("INSERT INTO board (title, content, author) VALUES (:title, :content, :author)");
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
$stmt->bindParam(':author', $author);
$stmt->execute();
$message = "๊ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋์์ต๋๋ค!";
header('Location: list.php'); // ๊ธ ๋ชฉ๋ก์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ
exit();
} catch(PDOException $e) {
$message = "๊ธ ์์ฑ ์ค๋ฅ: " . $e->getMessage();
}
}
}
?>
์ ๊ธ ์์ฑ
์ ๊ธ ์์ฑ
6. ๊ธ ๋ณด๊ธฐ (view.php)
ํน์ #๊ธ์ ๋ด์ฉ์ ์์ธํ๊ฒ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง์ ๋๋ค.
PHP
0) {
try {
$stmt = $conn->prepare("SELECT id, title, content, author, created_at, updated_at FROM board WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$post = $stmt->fetch();
if (!$post) {
echo "ํด๋น ๊ธ์ ์ฐพ์ ์ ์์ต๋๋ค.";
exit();
}
} catch(PDOException $e) {
echo "์ค๋ฅ: " . $e->getMessage();
exit();
}
} else {
echo "์๋ชป๋ ์ ๊ทผ์
๋๋ค.";
exit();
}
?>
๊ธ ๋ณด๊ธฐ:
์์ฑ์: |
์์ฑ์ผ: |
์์ ์ผ:
7. ๊ธ ์์ (edit.php)
๊ธฐ์กด #๊ธ์ ๋ด์ฉ์ ๊ฐ์ ธ์์ ์์ ํ๊ณ , #๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฐ์ดํธํ๋ #๋ก์ง์ด์์.
PHP
0) {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// POST ์์ฒญ (์์ ์๋ฃ)
$title = trim($_POST['title'] ?? '');
$content = trim($_POST['content'] ?? '');
$author = trim($_POST['author'] ?? ''); // ์์ฑ์๋ ๋ณดํต ์์ ํ์ง ์์ง๋ง, ์์๋ก ํฌํจ
if (empty($title) || empty($content) || empty($author)) {
$message = "๋ชจ๋ ํ๋๋ฅผ ์ฑ์์ฃผ์ธ์.";
} else {
try {
$stmt = $conn->prepare("UPDATE board SET title = :title, content = :content, author = :author, updated_at = NOW() WHERE id = :id");
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
$stmt->bindParam(':author', $author);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$message = "๊ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์์ ๋์์ต๋๋ค!";
header('Location: view.php?id=' . $id); // ์์ ๋ ๊ธ ๋ณด๊ธฐ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
exit();
} catch(PDOException $e) {
$message = "๊ธ ์์ ์ค๋ฅ: " . $e->getMessage();
}
}
}
// GET ์์ฒญ ๋๋ POST ์์ฒญ ์คํจ ์ ๊ธฐ์กด ๊ธ ๋ด์ฉ ๋ถ๋ฌ์ค๊ธฐ
try {
$stmt = $conn->prepare("SELECT id, title, content, author FROM board WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$post = $stmt->fetch();
if (!$post) {
echo "ํด๋น ๊ธ์ ์ฐพ์ ์ ์์ต๋๋ค.";
exit();
}
} catch(PDOException $e) {
echo "์ค๋ฅ: " . $e->getMessage();
exit();
}
} else {
echo "์๋ชป๋ ์ ๊ทผ์
๋๋ค.";
exit();
}
?>
๊ธ ์์ :
๊ธ ์์
8. ๊ธ ์ญ์ (delete.php)
#ํน์ #๊ธ์ #๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๊ฑฐํ๋ #๋ก์ง์ด์์. ๋ณด์์ ์ํด #POST ๋ฐฉ์์ผ๋ก ์์ฒญ์ ๋ฐ๋๋ก ํ๋ ๊ฒ์ด ์ข์์.
PHP
0) {
try {
$stmt = $conn->prepare("DELETE FROM board WHERE id = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
echo "๊ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์ญ์ ๋์์ต๋๋ค.";
header('Location: list.php'); // ๊ธ ๋ชฉ๋ก์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ
exit();
} catch(PDOException $e) {
echo "๊ธ ์ญ์ ์ค๋ฅ: " . $e->getMessage();
// ์ค๋ฅ ์์๋ ์ฌ์ฉ์์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ ์ ํ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
echo "";
exit();
}
} else {
echo "์๋ชป๋ ์ ๊ทผ์
๋๋ค.";
echo "";
exit();
}
} else {
echo "์๋ชป๋ ์์ฒญ ๋ฐฉ์์
๋๋ค."; // POST๊ฐ ์๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผ ์
echo "";
exit();
}
?>
9. ๋ง์น๋ฉฐ
์ด๋ฒ ์ฃผ์๋ #PHP๋ฅผ ์ฌ์ฉํ์ฌ #๊ฒ์ํ์ ๊ธฐ๋ณธ์ ์ธ #CRUD ๊ธฐ๋ฅ์ ๋ชจ๋ ๊ตฌํํด ๋ณด์์ด์. #๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ๋ถํฐ #๊ธ ์์ฑ, ์ฝ๊ธฐ, ์์ , ์ญ์ ๊น์ง์ ์ ์ฒด #๋ก์ง ํ๋ฆ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋์ จ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ค์ ์ฃผ์ฐจ์๋ ์ด ๊ธฐ๋ณธ #๊ฒ์ํ์ ์ข ๋ ๊ฐ์ ํ๊ณ ํ์ด์ง ์ ์ฉ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃฐ ์์ ์ด๋ ๊ธฐ๋ํด ์ฃผ์ธ์!
๊ฐ์ฑ๋น VPN ๋ฃจ์ VPN
VPN์ด ํ์ ํ๋ค๋ฉด
LuzenVPN(๋ฃจ์ VPN) #์ฐฉํ๊ฐ๊ฒฉ, #๋น ๋ฅธ์๋น์ค, #์์ ์ฑ ๊น์ง ๊ฐ์ถ, #ํด๋ฆฐ์์ดํผ ์ ๊ณต ์ผ๋ก #๋ง์ผํ ๋ถํฐ #๊ฒ์ ๊น์ง! ํ๋ฒ์ ํด๊ฒฐ