์์ ํฌ์คํ ์์ PHP๋ฅผ ์ค์นํ์๋๋ฐ, PHP์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ๋ PDO๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ์ฌ ๊ฐ์ด๋ ๋ฌธ์๋ฅผ ๋จ๊ธด๋ค.
[PHP] Windows ํ๊ฒฝ์ PHP ์ค์นํ๊ธฐ
๊ฐ๋จํ ์น ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๊ธฐ ์ํด php๋ฅผ ์ค์นํ์๊ณ , ๊ทธ ๊ณผ์ ์ ๊ธฐ์ ํ๋ค. ๋จผ์ php ๊ณต์ ์ฌ์ดํธ์ ์ ์ํ๋ค. PHPPHP is a popular general-purpose scripting language that powers everything from your blog to the most popu
idox.tistory.com
PHP์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ
์ด 3๊ฐ์ง๊ฐ ์๋๋ฐ, PDO๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ทธ ์ค ํ๋์ด๋ค.
- mysql_connect() → PHP 7.0์์ ์ญ์
- mysqli_connect()
- PDO
PDO๋?
PDO(PHP Data Objects)๋ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ํ์คํ์ํจ ๊ฒ์ผ๋ก, ๊ธฐ์กด์๋ DB ์ข ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅธ API๋ฅผ ์ฌ์ฉํ๋ค๋ฉด PDO๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก DB์ ์ ๊ทผํ๊ฑฐ๋ ์ ์ดํ ์ ์๋ค.
The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP. Each database driver that implements the PDO interface can expose database-specific features as regular extension functions. Note that you cannot perform any database functions using the PDO extension by itself; you must use a database-specific PDO driver to access a database server.
PHP ๋ฐ์ดํฐ ๊ฐ์ฒด(PDO) ํ์ฅ์ PHP์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ๊ธฐ ์ํ ๊ฐ๋ณ๊ณ ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํฉ๋๋ค. PDO ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ ๊ธฐ๋ฅ์ ์ผ๋ฐ ํ์ฅ ํจ์๋ก ๋ ธ์ถํ ์ ์์ต๋๋ค. PDO ํ์ฅ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฅ์ ๋จ๋ ์ผ๋ก ์ํํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ก์ธ์คํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ PDO ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
PHP: Introduction - Manual
Introduction
www.php.net
W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
์๋ฌดํผ, ๋ค์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ ์ฐํ๊ณ SQL ์ธ์ ์ ๋ฐฉ์ด๋ฅผ ์ํ Prepared Statements๋ฅผ ์ฌ์ฉํ ์ ์๊ณ ์์ธ ์ฒ๋ฆฌ๋ API์ ์ผ๊ด์ฑ ๋ฑ ๊ธฐ์กด PHP ๊ฐ๋ฐ ๋ฐฉ์๋ณด๋ค ๋์ ํ๊ฒฝ์ ์ ๊ณตํ๋ค๋ ๊ฒ ๊ฐ๋ค.
PDO ์ค์น ๋ฐฉ๋ฒ
๋ฆฌ๋ ์ค ํ๊ฒฝ์ด๋ผ๋ฉด ์๋ ๋ช ๋ น์ ํตํด ์์ฝ๊ฒ ์ค์นํ ์ ์์ง๋ง,
sudo apt-get install php-pdo
์๋์ฐ์์๋ PHP ์ค์น ํด๋ ๋ด์ php.ini ํ์ผ์ ์์ ํ๋ ๊ท์ฐฎ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค. ์๋ ๋ด์ฉ์ ์์ฑํ๋ค. (์ฃผ์ ํด์ )
extension=pdo_mysql
php.ini ํ์ผ์ด ์๋ ๊ฒฝ์ฐ, ์๋์ ๊ฐ์ด ini ํ์ผ์ ๋ฐฑ์ ๋ณธ(?)์ด ์์ํ ๋ฐ ์ด๊ฑธ ๋ณต์ฌํด์ ์ฌ์ฉํ๋ฉด ๋จ.

PDO๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฐฉ๋ฒ
PDO ํด๋์ค ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฌธ์์ด(DSN)๊ณผ ์ฌ์ฉ์๋ช , ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ฌํ์ฌ ์ฐ๊ฒฐ ๊ฐ๋ฅํ๋ค.
<?php
try {
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$username = 'root';
$password = 'password';
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Database connection established successfully.";
} catch (PDOException $e) {
echo "Database connection failed: " . $e->getMessage();
}
?>
PDO ์ฟผ๋ฆฌ ์คํ ๋ฐฉ๋ฒ
DB ์ฐ๊ฒฐ ํ์๋ ๊ฐ๋จํ๊ฒ ์ฟผ๋ฆฌ๋ฅผ ์์ฑ ๋ฐ ์คํํ ์ ์๋ค. ์๋ ์์ ๋ users ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉ์์ ์ด๋ฆ์ ์ถ๋ ฅํ๋ ๊ฒ์ผ๋ก, ํ์ฅํ์ฌ ๋ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์๋ ์๋ค.
<?php
$query = $pdo->query("SELECT * FROM users");
$users = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as $user) {
echo $user['name'] . "<br>";
}
?>
Prepared Statements๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด prepare(), bindParam(), execute() ๋ฉ์๋๋ฅผ ํ์ฉํ๋ฉด ๋๋ค.
<?php
$sql = "SELECT * FROM users WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':email', $email);
$email = 'test@example.com';
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
echo $user['name'];
?>
<?php
$sql = "INSERT INTO users (name, email, password) VALUES (:name, :email, :password)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':name' => 'John Doe',
':email' => 'john@example.com',
':password' => password_hash('secret', PASSWORD_DEFAULT)
]);
echo "New user inserted successfully.";
?>'๐ ETC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [PHP] Windows ํ๊ฒฝ์ PHP ์ค์นํ๊ธฐ (0) | 2025.11.23 |
|---|---|
| [Tools] Windows ํ๊ฒฝ FFmpeg ์ค์น ๋ฐ ์ฌ์ฉ๋ฒ (0) | 2025.11.12 |
| hELLO ์คํจ ์ด๋ฏธ์ง๊ฐ ๋ณธ๋ฌธ ํญ์ ๋ฒ์ด๋์ง ์๊ฒ ์ปค์คํ ํ๊ธฐ (0) | 2025.03.11 |
| [ENV] PC ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ ๊ฐ์ด๋ (0) | 2025.03.10 |
| ๋ธ๋ก๊ทธ 1์ผ์ฐจ, ๊ฐ๋ฐ 4๋ ์ฐจ ์ด๋ณด ๊ฐ๋ฐ์์ ์ผ๊ธฐ ์์ (2) | 2022.04.04 |