PHP์์ DBMS๋ฅผ ์ฐ๋ํ๋ ์๋ก์ด ๋ฐฉ๋ฒ, PDO
์น ์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ค๋ณด๋ฉด, DBMS์ ์ฐ๋ํด์ผ ๋ ์ผ์ด ์๊น๋๋ค. ํนํ ๋์ ์ฌ์ดํธ ๋ฑ์ ๊ฒ์ํ์ ์ด์ฉํ๋ ์ ํ์ ์ฌ์ดํธ๋ค์ ๋์ฑ ๊ทธ๋ฌํ์ง์.
์ต๊ทผ ์ ๊ฐ ์๋ก์ด ๋จ์ผ ํ์ด์ง ๊ตฌ์ถ์ ํ๊ฒ ๋๋ฉด์, PHP์์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก DBMS์ ์ฐ๋ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋๋ฐ, ์ด ๋ฐฉ๋ฒ์ด ์๊ฐ๋ณด๋ค ์ ์ฉํ๋ค ์๊ฐํ์ฌ ํฌ์คํ ํด๋ณด๊ณ ์ ํฉ๋๋ค.
๊ธฐ์กด ๋ฐฉ์์ DBMS ์ฐ๋
์ ๋ PHP ์ธ์ด๋ฅผ C ์ธ์ด์ ์ ์ฌํ๊ฒ ๋์ด ์์ด์ ์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ฝ๋ฉํ๋ ์ต๊ด์ ๊ฐ์ง๊ณ ์์์ต๋๋ค.
<?
$hostname = 'localhost';
$db_id = 'neonkid';
$db_pw = 'password';
$db_conn = mysql_connect($hostname, $db_id, $db_pw);
mysql_set_charset('utf8',$link); // ์ ํ ์ฌํญ,,
if(!$db_conn) {
die('connect error !! ', mysql_error());
}
?>
์์ ๊ฐ์ด ์ ์ฐจ ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ ๋๋ ์ ํ์ ์ผ๋ก DB ์๋ฒ ์ฐ๊ฒฐ์ ์คํจํ์ ๊ฒฝ์ฐ, ์กฐ๊ฑด๋ฌธ์ ์์ฑํ์ฌ ์ฒ๋ฆฌํด์ผ ํ์ผ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด php_fpm socket ์๋ฒ์์ ์ง์ ์ค๋ฅ๋ฅผ ๋ฟ๋๋ฐ, ์ฌ๋งํด์ die ํจ์๋ฅผ ์ฌ์ฉํด ๋ฆฌ์์ค๋ฅผ ์ค์ด๋ ๋ฐฉ์ฑ ์ ์ฌ์ฉํ์ต๋๋ค.
๋ํ ์ง๊ธ ์ ์ฝ๋๋ MySQL์ ์ฌ์ฉํ๋ DB Server๋ฅผ ์ฐ๋ํ ๋ ์ฐ๋ PHP ํจ์์ด๊ณ , ๋ค๋ฅธ DB ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค๋ฅธ ์ ์ฉ ํจ์๋ฅผ ์จ์ผ ํ๋ ๋จ์ ์ด ์์ด, ์์ ์ด ๋ง์ฝ DBMS๋ฅผ MariaDB๋ MySQL 5.6 ๋ฒ์ ์ด์ ๋๋ ๊ทธ ์ธ์ DBMS๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ด๋ ๊ต์ฒดํ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ์์ค ์ฝ๋๋ฅผ ๊ณ ์ณ์ผ ํ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์๋ก์ด ๋ฐฉ์์ DBMS ์ฐ๋
์ ๊ฐ Python ์ธ์ด๋ฅผ ๋ค์ ์์ํ๊ธฐ ์์ํ๋ฉด์, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ๋์ ๋๋ ธ๋๋ฐ์. ๊ทธ๋ฌ๋ค๊ฐ ์ฐ์ฐํ PHP์์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์๋กญ๊ณ PHP ๊ณต์ ์ฌ์ดํธ์์๋ ๊ถ์ฅํ๋ DBMS ์ฐ๋ ๋ฐฉ๋ฒ์ ํฐ๋ํ์์ต๋๋ค.
<?
$db_id = 'neonkid';
$db_pw = 'password';
try {
$pdo = new PDO('mysql:host=hostname;dbname=db_name, $db_id, $db_pw);
$pdo->exec("SET CHARACTER SET utf8"); // ์ ํ ์ฌํญ,,
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $ex) {
echo "Failed DBMS connection". $ex->getMessage();
}
?>
PHP 5.5 ๋ฒ์ ์์๋ถํฐ๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์ PDO(PHP Data Objects)๋ก ํตํฉ์์ผฐ์ต๋๋ค. ์ด์ ๋ ์์ ์ด MySQL์ ์ฐ๊ธฐ ์ํด ๊ตณ์ด mysql์ฉ ํจ์๋ฅผ ์ฐ์ง ์์๋ PDO์์ ์ฃผ์ ํ์๋ง์ผ๋ก PostgreSQL์ด๋ Oracle DBMS, SQLite ๋ฑ์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋ํ PDO๋ ๊ธฐ์กด API ๋ฐฉ์๊ณผ๋ ๋ฌ๋ฆฌ ๋ฐํ์ ํ์์ ๋ชจ๋๋ฌ๋ก ๊ตฌํ๋์ด ์์ด์ PHP ์์ง์ ๊ตณ์ด ์ปดํ์ผํ๊ฑฐ๋ ์ฌ์ค์นํ์ง ์์๋ ๋ฐํ์ ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค.
ํ์ง๋ง PDO๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด PHP ์ค์ ์์ PDO ๋ชจ๋์ ์ฌ์ฉํ ์ ์๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
PDO ์ฌ์ฉํด๋ณด๊ธฐ
PDO๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด php.ini ํ์ผ์ ์์ ํด์ผํฉ๋๋ค.
์์ ๋ํ ๋ชจ๋ ์ฃผ์์ ํด์ ํด์ค๋๋ค. ๋ง์ฝ ์์ ์ด Apache 2.x๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด php.ini ํ์ผ์ ์์ ํด์ผ ํ๊ณ , nginx ์์ง์ ์ฌ์ฉํ์ฌ php-fpm์ ๋๋ฆฌ๊ณ ์๋ค๋ฉด, conf.d ๋๋ ํฐ๋ฆฌ์์ ๊ฐ pdo ์ค์ ํ์ผ์ ํ์ธํด์ผํฉ๋๋ค.
๋ชจ๋ ํ์ฅ ๊ธฐ๋ฅ์ด ์ฐ๋๋์ด์ก๋ค๋ฉด, PHP ๋ฐ๋ชฌ์ ์ฌ์์ํด์ค๋๋ค.
# systemctl restart php-fpm.service
์ด์ PDO ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ DBMS๋ฅผ ์ฐ๋ํ์๋ฉด ๋ฉ๋๋ค.
'Programming > PHP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Eclipse๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฒฉ ์๋ฒ๋ฅผ ํตํ PHP ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ (2) | 2015.10.27 |
---|