¸ñÂ÷
Zend_Db (¿Í)°ú ±× °ü·Ã Ŭ·¡½º±ºÀº,Zend Framework ¿¡ µÎ¾î SQL µ¥ÀÌŸº£À̽º¿ÍÀÇ ÀÎÅÍÆäÀ̽º¸¦ ´ã´çÇÕ´Ï´Ù. Zend_Db_Adapter (Àº)´Â,PHP ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ RDBMS ¿¡ Á¢¼ÓÇÒ ¶§¿¡ »ç¿ëÇÏ´Â ±âº» Ŭ·¡½ºÀÔ´Ï´Ù. RDBMS ÀÇ Á¾·ù¿¡ µû¸£°í, °¢°¢ °³º°ÀÇ ¾î´ðÅÍ Å¬·¡½º°¡ ÀÖ½À´Ï´Ù.
Zend_Db ÀÇ ¾î´ðÅÍ´Â, º¥´õ °íÀ¯ÀÇ PHP È®Àå ¸ðµâÀ» °øÅë ÀÎÅÍÆäÀ̽º¿¡ ÀÖ¾î Á¤¸®ÇÏ´Â ¿ªÇÒÀ» ¿Ï¼öÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ÇÑ ¹ø ½è´Ù PHP ¾îÇø®ÄÉÀ̼ÇÀÌ ¾ÆÁÖ Á¶±ÝÀÇ ¼ö°í·Î º¹¼ö RDBMS ¿¡ ´ëÀÀÇÏ°Ô µË´Ï´Ù.
¾î´ðÅÍ Å¬·¡½ºÀÇ ÀÎÅÍÆäÀ̽º´Â, PHP Data Objects È®Àå ¸ðµâÀÇ ÀÎÅÍÆäÀ̽º¿Í ´à¾Æ ÀÖ½À´Ï´Ù. Zend_Db ±×·³, ´ÙÀ½ÀÇ RDBMS ¿ë¹«ÀÇ PDO µå¶óÀ̹ö¿¡ ´ëÇÑ ¾î´ðÅÍ Å¬·¡½º¸¦ ÁغñÇϰí ÀÖ½À´Ï´Ù.
°Ô´Ù°¡Zend_Db ±×·³, ÀÌÇÏÀÇ RDBMS ¿ë¹«ÀÇ È®Àå ¸ðµâÀ» »ç¿ëÇÏ´Â ¾î´ðÅÍ Å¬·¡½ºµµ ÁغñÇØ ÀÖ½À´Ï´Ù.
MySQL (mysqli (À»)¸¦ »ç¿ëÇÕ´Ï´Ù)
Oracle (oci8 (À»)¸¦ »ç¿ëÇÕ´Ï´Ù)
IBM DB2 (ibm_db2 (À»)¸¦ »ç¿ëÇÕ´Ï´Ù)
Firebird/Interbase (php_interbase (À»)¸¦ »ç¿ëÇÕ´Ï´Ù)
![]() |
ÁÖÀÇ |
---|---|
Zend_Db ÀÇ ¾î´ðÅÍ´Â, ¸ðµÎ PHP ÀÇ È®Àå ¸ðµâÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù. Zend_Db ÀÇ ¾î´ðÅ͸¦ »ç¿ëÇÏ·Á¸é , ´ëÀÀÇÑ´Ù PHP È®Àå ¸ðµâÀ» »ç¿ëÇÒ ¼ö Àִ ȯ°æÀÌ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. ¿¹¸¦ µé¾î,PDO °èÀÇ Zend_Db ¾î´ðÅ͸¦ »ç¿ëÇÑ´Ù¸é, PDO È®Àå ¸ðµâÀÌ ÇÊ¿äÇϰí, ¶Ç »ç¿ëÇÑ´Ù RDBMS ¿ë¹«ÀÇ PDO µå¶óÀ̹öµµ ÇÊ¿äÇÕ´Ï´Ù. |
¿©±â¿¡¼´Â, µ¥ÀÌŸº£À̽º ¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù. À̰ÍÀº,PHP ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ RDBMS ¼¹ö¿¡ÀÇ Á¢¼ÓÀ» È®¸³ÇÏ´Â °Í¿¡ ´ëÀÀÇÕ´Ï´Ù.
constructor¡¡ ¡¡ À» »ç¿ëÇϰí, ¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î´ðÅÍÀÇ constructor¡¡ ¡¡ ÀÌ ¹Þ´Â Àμö´Â Çϳª·Î, Á¢¼ÓÀ» È®¸³Çϱâ À§Çؼ ÇÊ¿äÇÑ ÆÄ¶ó¹ÌÅ͸¦ ¹è¿·Î °Ç³×ÁÝ´Ï´Ù.
·Ê 10.1. ¾î´ðÅÍÀÇ constructor¡¡ ¡¡ ÀÇ »ç¿ë
<?php
require_once 'Zend/Db/Adapter/Pdo/Mysql.php';
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
constructor¡¡ ¡¡ À» Á÷Á¢ »ç¿ëÇÏ´Â ÀÌ¿Ü ¹æ¹ýÀ¸·Î¼ Á¤Àû ¸Þ¼Òµå
Zend_Db::factory()
(À»)¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â, Çʿ信 µû¶ó¼
Zend_Loader::loadClass()
(À»)¸¦ »ç¿ëÇØ µ¿ÀûÀ¸·Î ¾î´ðÅÍ Å¬·¡½º¸¦ ÀоîµéÀÔ´Ï´Ù.
ÃÖÃÊÀÇ Àμö¿¡´Â, ¾î´ðÅÍ Å¬·¡½ºÀÇ º£À̽º¸íÀ» ¹®ÀÚ¿·Î ÁöÁ¤ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¹®ÀÚ¿ 'Pdo_Mysql' ÇÏ Zend_Db_Adapter_Pdo_Mysql Ŭ·¡½º¿¡ ´ëÀÀÇÕ´Ï´Ù.±× ´ÙÀ½ÀÇ Àμö´Â, ¾î´ðÅÍÀÇ constructor¡¡ ¡¡ À¸·Î ÁöÁ¤ÇÏ´Â °Í°ú °°Àº Çü½ÄÀÇ ¹è¿ÀÌ µË´Ï´Ù.
·Ê 10.2. ÆÑÅ丮 ¸Þ¼ÒµåÀÇ »ç¿ë
<?php
require_once 'Zend/Db.php';
// ÀÚµ¿ÀûÀ¸·Î Zend_Db_Adapter_Pdo_Mysql Ŭ·¡½º¸¦ Àоîµé¿©, ±× ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$db = Zend_Db::factory('Pdo_Mysql', array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
µ¶ÀÚÀûÀ¸·Î Zend_Db_Adapter_Abstract
ÀÇ »ó¼Ó Ŭ·¡½º¸¦ ÀÛ¼ºÇØ, ±× Ŭ·¡½º¸íÀÇ ÇÁ·¹ÇȽº°¡
"Zend_Db_Adapter" (ÀÌ)°¡ ¾Æ´Ñ °æ¿ì¿¡ factory()
±×¸®°í ±× ¾î´ðÅ͸¦ ÀоîµéÀÌ·Á¸é ,
ÀÛ¼ºÇÑ Å¬·¡½º¸íÀÇ ¼±µÎÀÇ ºÎºÐÀ» ÆÄ¶ó¹ÌÅÍ ¹è¿ÀÇ Å°
'adapterNamespace' ±×¸®°í ÁöÁ¤ÇÕ´Ï´Ù.
·Ê 10.3. ÀÚÀÛÀÇ ¾î´ðÅÍ Å¬·¡½º¸¦ ¾î´ðÅÍÀÇ ÆÑÅ丮 ¸Þ¼Òµå·Î »ç¿ëÇÏ´Â ¹æ¹ý
<?php
require_once 'Zend/Db.php';
// ÀÚµ¿ÀûÀ¸·Î MyProject_Db_Adapter_Pdo_Mysql Ŭ·¡½º¸¦ Àоîµé¿©, ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù
$db = Zend_Db::factory('Pdo_Mysql', array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test',
'adapterNamespace' => 'MyProject_Db_Adapter'
));
factory()
¸Þ¼ÒµåÀÇ Àμö·Î¼
Zend_Config
ÀÇ ¿ÀºêÁ§Æ®¸¦ °Ç³×ÁÙ ¼öµµ ÀÖ½À´Ï´Ù.
ÃÖÃÊÀÇ Àμö¿¡ config ¿ÀºêÁ§Æ®¸¦ °Ç³×ÁÖ´Â °æ¿ì´Â, ±× ÇÁ·ÓÆÛƼ¿¡
adapter
ÇÏÁö¸¸ Æ÷ÇԵǾî ÀÖ´Â °ÍÀ¸·Î ÇÕ´Ï´Ù.
°Å±â¿¡, ¾î´ðÅÍ Å¬·¡½º¸íÀ» ³ªÅ¸³»´Â ¹®ÀÚ¿À» ÁöÁ¤ÇÕ´Ï´Ù.
¶Ç, ¿É¼ÇÀ¸·Î params
±×·¸´Ù°í ÇÏ´Â ÇÁ·ÓÆÛƼµµ ÁöÁ¤ÇÒ ¼ö ÀÖ¾î
±× ºÎÇÏÀÇ ¼ºê ÇÁ·ÓÆÛƼ·Î¼ ¾î´ðÅÍÀÇ ÆÄ¶ó¹ÌÅ͸íÀ» ÁöÁ¤ÇÕ´Ï´Ù.
À̰ÍÀº,factory()
¸Þ¼ÒµåÀÇ
2 ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅ͸¦ »ý·« ÇßÀ» °æ¿ì¿¡°Ô¸¸ ÀÐÈü´Ï´Ù.
·Ê 10.4. ¾î´ðÅÍÀÇ ÆÑÅ丮 ¸Þ¼Òµå·ÎÀÇ Zend_Config ¿ÀºêÁ§Æ®ÀÇ »ç¿ë
´ÙÀ½ÀÇ ¿¹¿¡¼´Â, ¹è¿·ÎºÎÅÍ Zend_Config ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ±× À̿ܿ¡µµ, Zend_Config_Ini (ÀÌ)³ª Zend_Config_Xml µîÀ» ÀÌ¿ëÇØ ¿ÜºÎ ÆÄÀϷκÎÅÍ µ¥ÀÌÅ͸¦ ÀоîµéÀÏ ¼öµµ ÀÖ½À´Ï´Ù.
<?php
require_once 'Zend/Config.php';
require_once 'Zend/Db.php';
$config = new Zend_Config(
array(
'database' => array(
'adapter' => 'Mysqli',
'params' => array(
'dbname' => 'test',
'username' => 'webuser',
'password' => 'secret',
)
)
)
);
$db = Zend_Db::factory($config->database);
));
factory()
¸Þ¼ÒµåÀÇ 2 ¹øÂ°ÀÇ Àμö¿¡´Â,
¾î´ðÅÍÀÇ ÆÄ¶ó¹ÌÅÍ¿¡ ´ëÀÀÇÏ´Â ¿£Æ®¸®¸¦ °¡Áö´Â ¿¬»ó ¹è¿ÀÌ µË´Ï´Ù.
ÀÌ Àμö´Â ¿É¼ÇÀÔ´Ï´Ù.ÃÖÃÊÀÇ Àμö°¡ Zend_Config
ÀÎ °æ¿ì´Â, °Å±â¿¡ ¸ðµç ÆÄ¶ó¹ÌÅͰ¡ Æ÷ÇԵǾî ÀÖ´Â °ÍÀ¸·Î °£ÁÖÇØ,
2 ¹øÂ°ÀÇ Àμö´Â ¹«½ÃµË´Ï´Ù.
Zend_Db ÀÇ ¾î´ðÅÍ Å¬·¡½º¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ÆÄ¶ó¹ÌÅ͸¦ ÀÌÇÏ¿¡ Á¤¸®ÇÕ´Ï´Ù.
host: µ¥ÀÌÅÍ º£À̽º ¼¹öÀÇ È£½ºÆ®¸í ȤÀº IP ÁÖ¼Ò. µ¥ÀÌŸº£À̽º°¡ PHP ¾îÇø®ÄÉÀ̼ǰú °°Àº È£½ºÆ®»ó¿¡¼ ¿òÁ÷À̰í ÀÖ´Â °æ¿ì´Â, 'localhost' ȤÀº '127.0.0.1' (À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
username: RDBMS ¼¹ö¿¡ÀÇ Á¢¼Ó½Ã¿¡ »ç¿ëÇÏ´Â ÀÎÁõ¿ë ¾îÄ«¿îÆ®ÀÇ ID.
password: RDBMS ¼¹ö¿¡ÀÇ Á¢¼Ó½Ã¿¡ »ç¿ëÇÏ´Â ÀÎÁõ¿ë ÆÐ½º¿öµå.
dbname: RDBMS ¼¹ö»óÀÇ µ¥ÀÌŸº£À̽º ÀνºÅϽº¸í.
port: RDBMS ¼¹ö¿¡ µû¶ó¼´Â, °ü¸®ÀÚ°¡ ÁöÁ¤Çß´Ù Æ÷Åä ¹øÈ£¿¡ ÀÇÇÑ ³×Æ®¿öÅ© Á¢¼ÓÀ» Çã°¡Çϰí ÀÖ´Â °Íµµ ÀÖ½À´Ï´Ù. ÀÌ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇϸé,PHP ¾îÇø®ÄÉÀ̼ÇÀÌ Á¢¼Ó½Ã¿¡ »ç¿ëÇÏ´Â Æ÷Åä ¹øÈ£¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº RDBMS ¼¹öÀÇ ¼³Á¤¿¡ ¸ÂÃßÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
options: ÀÌ ÆÄ¶ó¹ÌÅÍ´Â, ¸ðµç Zend_Db_Adapter Ŭ·¡½º¿¡¼ °øÅëÀÇ ¿É¼ÇÀ» ¿¬»ó ¹è¿·Î ÁöÁ¤ÇÕ´Ï´Ù.
driver_options: ÀÌ ÆÄ¶ó¹ÌÅÍ´Â, °¢ µ¥ÀÌŸº£À̽º È®Àå ¸ðµâ¿¡ °íÀ¯ÀÇ Ãß°¡ ¿É¼ÇÀ» ¿¬»ó ¹è¿·Î ÁöÁ¤ÇÕ´Ï´Ù. ÀüÇüÀûÀÎ »ç¿ë¿¹·Î¼´Â,PDO µå¶óÀ̹öÀÇ ¼Ó¼ºµîÀÌ ÀÖ½À´Ï´Ù.
adapterNamespace:
¾î´ðÅÍ Å¬·¡½ºÀÇ À̸§ÀÇ ¼±µÎ°¡ 'Zend_Db_Adapter'
ÀÌ¿ÜÀÎ °æ¿ì¿¡, ±×°ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù.À̰ÍÀº,
Zend À̿ܰ¡ ÀÛ¼ºÇÑ ¾î´ðÅÍ Å¬·¡½º¸¦
factory()
¸Þ¼Òµå·Î »ç¿ëÇÏ°í ½ÍÀº °æ¿ì·Î ÁöÁ¤ÇÕ´Ï´Ù.
·Ê 10.5. ÆÑÅ丮·ÎÀÇ ´ë¹®ÀÚ ¼Ò¹®ÀÚ º¯È¯ ¿É¼ÇÀÇ ÁöÁ¤
ÀÌ ¿É¼ÇÀº, Á¤¼ö
Zend_Db::CASE_FOLDING
±×¸®°í ÁöÁ¤ÇÕ´Ï´Ù.
À̰ÍÀº,PDO (ÀÌ)³ª IBM DB2 µ¥ÀÌŸº£À̽º µå¶óÀ̹ö¿¡ ÀÖ¾î¼ÀÇ
ATTR_CASE
¼Ó¼º¿¡ ´ëÀÀÇÏ´Â °ÍÀ¸·Î,
°á°ú ¼¼Æ®ÀÇ ¹®ÀÚ¿ ŰÀÇ ´ë¹®ÀÚ ¼Ò¹®ÀÚ º¯È¯À» ÁöÁ¤ÇÕ´Ï´Ù.
¼³Á¤ÇÒ ¼ö ÀÖ´Â °ªÀº
Zend_Db::CASE_NATURAL
(µðÆúÆ®),
Zend_Db::CASE_UPPER
¹×
Zend_Db::CASE_LOWER
ÀÇ ¸ÓÁö¾Ê¾ÆÀΰ¡ÀÔ´Ï´Ù.
<?php
$options = array(
Zend_Db::CASE_FOLDING => Zend_Db::CASE_UPPER
);
$params = array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test',
'options' => $options
);
$db = Zend_Db::factory('Db2', $params);
·Ê 10.6. ÆÑÅ丮·ÎÀÇ ÀÚµ¿ ÄíÆ®¿ÀÇÁ¼ÇÀÇ ÁöÁ¤
ÀÌ ¿É¼ÇÀº, Á¤¼ö
Zend_Db::AUTO_QUOTE_IDENTIFIERS
±×¸®°í ÁöÁ¤ÇÕ´Ï´Ù.
ÀÌ °ªÀÌ true
(µðÆúÆ®) ÀÇ °æ¿ì´Â,
¾î´ðÅͰ¡ »ý¼ºÇÑ´Ù SQL ¹®ÁßÀÇ Å×À̺í¸íÀ̳ª Ä÷³¸í,
¾Ù¸®¾î½º(alias)¶ó°í ÇÏ´Â ½Äº°ÀÚ¸¦ ¸ðµÎ ÄíÆ® ÇÕ´Ï´Ù.À̰Ϳ¡ ÀÇÇØ,
SQL ÀÇ Å°¿öµå³ª Ư¼ö ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ ½Äº°ÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
ÀÌ °ªÀÌ false
ÀÇ °æ¿ì´Â,
½Äº°ÀÚÀÇ ÀÚµ¿ ÄíÆ®´Â ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.
ÄíÆ® ÇØ¾ß ÇÒ ¹®ÀÚ¸¦ »ç¿ëÇϰí ÀÖ´Â °æ¿ì´Â, ½º½º·Î
quoteIdentifier()
¸Þ¼Òµå¸¦ ÄÝ ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
<?php
$options = array(
Zend_Db::AUTO_QUOTE_IDENTIFIERS => false
);
$params = array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test',
'options' => $options
);
$db = Zend_Db::factory('Pdo_Mysql', $params);
·Ê 10.7. ÆÑÅ丮·ÎÀÇ PDO µå¶óÀ̹öÀÇ ¿É¼ÇÀÇ ÁöÁ¤
<?php
$pdoParams = array(
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
);
$params = array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test',
'driver_options' => $pdoParams
);
$db = Zend_Db::factory('Pdo_Mysql', $params);
echo $db->getConnection()->getAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY);
¾î´ðÅÍ Å¬·¡½ºÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÑ ½ÃÁ¡¿¡¼´Â, ¾ÆÁ÷ RDBMS ¼¹ö¿¡ÀÇ Á¢¼ÓÀº ÇàÇØÁöÁö ¾Ê½À´Ï´Ù. Á¢¼Ó¿ëÀÇ ÆÄ¶ó¹ÌÅ͸¦ ³»ºÎ¿¡¼ º¸°ü À¯ÁöÇØ µÎ¾î, ½ÇÁ¦·Î Äõ¸®¸¦ ½ÇÇàÇÏ°Ô µÈ ½ÃÁ¡¿¡¼ óÀ½À¸·Î Á¢¼ÓÀ» È®¸³ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ¾î´ðÅÍ ¿ÀºêÁ§Æ®¸¦ Àçºü¸£°Ô ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô µÇ¾î ÀÖ½À´Ï´Ù. Áï, ±× ¸®Äù½ºÆ® Áß(¾È)¿¡¼ ½ÇÁ¦·Î µ¥ÀÌŸº£À̽º Äõ¸®¸¦ ¹ßÇàÇÒÁö°¡ È®Á¤Çϰí ÀÖÁö ¾Ê¾Æµµ, ¿ì¼± ¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇØ µÎ´Â °Íµµ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
°Á¦ÀûÀ¸·Î RDBMS (¿Í)°úÀÇ Á¢¼ÓÀ» È®¸³ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì´Â,
getConnection()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â, ´ëÀÀÇÑ´Ù PHP È®Àå ¸ðµâ¿ëÀÇ Á¢¼Ó ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
¿¹¸¦ µé¾î,PDO µå¶óÀ̹ö°èÀÇ ¾î´ðÅÍ Å¬·¡½º¸¦ »ç¿ëÇßÀ» °æ¿ì´Â,
getConnection()
ÇÏ
µ¥ÀÌŸº£À̽º¿ÍÀÇ Á¢¼ÓÀ» È®¸³ÇÏ°í ³ª¼ PDO ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
µ¥ÀÌŸº£À̽º¿¡ÀÇ Á¢¼Ó½Ã¿¡ ¹ß»ýÇÏ´Â ¿¹¿Ü, Áï ID (ÀÌ)³ª ÆÐ½º¿öµåÀÇ ½Ç¼öµîÀ» Æ÷ÂøÇÏ°í ½ÍÀº °æ¿ì¿¡, À̰ÍÀº µµ¿òÀÌ µÇ°ÚÁö¿ä. ½ÇÁ¦·Î Á¢¼ÓÀ» ½Ç½ÃÇÒ ¶§±îÁö ¿¹¿Ü´Â ½½·Î¿ì µÇÁö ¾Ê±â ¶§¹®¿¡, ¾îµò°¡ 1À̳ª °÷¿¡ ¿¹¿Ü 󸮸¦ ¸ð¾Æ µÎ´Â ÆíÀÌ ¾îÇø®ÄÉÀ̼ÇÀÌ ½ÉÇÃÇÏ°Ô µÇ¾î Æí¸®ÇϰÚÁö¿ä.
·Ê 10.8. Á¢¼Ó½ÃÀÇ ¿¹¿Ü ó¸®
<?php
try {
$db = Zend_Db::factory('Pdo_Mysql', $parameters);
$db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
// ID Àΰ¡ ÆÐ½º¿öµå°¡ À߸øµÇ¾î ÀÖ´Ù, ȤÀº RDBMS ÇÏÁö¸¸ ±âµ¿Çϰí ÀÖÁö ¾Ê´Â µî¡¦¡¦
} catch (Zend_Exception $e) {
// factory() ÇÏÁö¸¸ ÁöÁ¤ÇÑ ¾î´ðÅÍ Å¬·¡½º¸¦ ÀоîµéÀÏ ¼ö ÀÖ´Â (¾È)Áߵ¡¦
}
Zend_Db Ŭ·¡½ºÀÇ ¹®¼¿¡¼´Â, Ŭ·¡½º³ª ¸Þ¼ÒµåÀÇ »ç¿ë¹ýÀ» ¼³¸íÇϱâ À§Çؼ ´Ü¼øÇÑ µ¥ÀÌŸº£À̽º¸¦ »ç¿ëÇÕ´Ï´Ù. À̰ÍÀº, ¾î¶² ¼ÒÇÁÆ®¿þ¾î °³¹ß ÇÁ·ÎÁ§Æ®¿¡ ÀÖ¾î¼ÀÇ ¹ö±× °ü¸®¸¦ »óÁ¤ÇÑ °ÍÀÔ´Ï´Ù. ´ÙÀ½ÀÇ 4 °³ÀÇ Å×À̺í·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù.
accounts Å×ÀÌºí¿¡´Â, ¹ö±× °ü¸® µ¥ÀÌŸº£À̽º¸¦ »ç¿ëÇÏ´Â À¯Àú¿¡ ´ëÇÑ Á¤º¸¸¦ °Ý³³ÇÕ´Ï´Ù.
products Å×ÀÌºí¿¡´Â, ¹ö±×¸¦ ±â·ÏÇÏ´Â ´ë»óÀÌ µÇ´Â Á¦Ç°¿¡ ´ëÇÑ Á¤º¸¸¦ °Ý³³ÇÕ´Ï´Ù.
bugs Å×ÀÌºí¿¡´Â, ¹ö±×¿¡ ´ëÇÑ Á¤º¸¸¦ °Ý³³ÇÕ´Ï´Ù. ¹ö±× »óųª º¸°íÀÚ, ¼öÁ¤ ´ã´çÀÚ, °ËÁõ ´ã´çÀÚµîÀÇ Á¤º¸°¡ Æ÷ÇԵ˴ϴÙ.
bugs_products Å×ÀÌºí¿¡´Â, ¹ö±×¿Í Á¦Ç°ÀÌ °ü·ÃÁö¾î Á¤º¸¸¦ °Ý³³ÇÕ´Ï´Ù. À̰ÍÀº, À̸¥¹Ù ´Ù´ë ´ÙÀÇ ¸±·¹ÀÌ¼Ç ½±À» ½ÇÀåÇÏ´Â °ÍÀÔ´Ï´Ù. ÇϳªÀÇ ¹ö±×°¡ º¹¼öÀÇ Á¦Ç°¿¡ °ü·ÃÇÏ´Â °ÍÀ̱⵵ Çϸé, ´ç¿¬È÷ ÇϳªÀÇ Á¦Ç°¿¡´Â º¹¼öÀÇ ¹ö±×°¡ Á¸ÀçÇϱ⠶§¹®ÀÔ´Ï´Ù.
ÀÌ »ùÇà µ¥ÀÌŸº£À̽º¸¦ ÀÛ¼ºÇϱâ À§ÇÑ SQL ÀÇ ÀÇ»ç ÄÚµå´Â, ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù. ÀÌ·¯ÇÑ Å×À̺íÀº,Zend_Db ÀÚüÀÇ À¯´Ö Å×½ºÆ®¿¡¼µµ »ç¿ëÇÕ´Ï´Ù.
CREATE TABLE accounts (
account_name VARCHAR(100) NOT NULL PRIMARY KEY
);
CREATE TABLE products (
product_id INTEGER NOT NULL PRIMARY KEY,
product_name VARCHAR(100)
);
CREATE TABLE bugs (
bug_id INTEGER NOT NULL PRIMARY KEY,
bug_description VARCHAR(100),
bug_status VARCHAR(20),
reported_by VARCHAR(100) REFERENCES accounts(account_name),
assigned_to VARCHAR(100) REFERENCES accounts(account_name),
verified_by VARCHAR(100) REFERENCES accounts(account_name)
);
CREATE TABLE bugs_products (
bug_id INTEGER NOT NULL REFERENCES bugs,
product_id INTEGER NOT NULL REFERENCES products,
PRIMARY KEY (bug_id, product_id)
);
¶Ç,bugs
Å×ÀÌºí¿¡´Â accounts
Å×À̺íÀ» °¡¸®Å°´Â ¿ÜºÎ Ű ÂüÁ¶°¡ º¹¼ö Æ÷ÇԵǰԵµ ÁÖÀÇÇսôÙ.
°¢°¢ÀÇ ¿ÜºÎ Ű´Â, ±× ¹ö±×¿¡ ´ëÇØ¼
accounts
Å×À̺íÀÇ ´Ù¸¥ ÇàÀ» ÂüÁ¶Çϱ⵵ ÇÕ´Ï´Ù.
»ùÇà µ¥ÀÌŸº£À̽ºÀÇ ¹°¸® µ¥ÀÌÅÍ ¸ðµ¨Àº, ´ÙÀ½ÀÇ ±×¸²°ú °°ÀÌ µË´Ï´Ù.
¿©±â¿¡¼´Â,SELECT Äõ¸®¸¦ ½ÇÇàÇØ ±× °á°ú¸¦ ÃëµæÇϱâ À§ÇÑ ¾î´ðÅÍÀÇ ¸Þ¼Òµå¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
SQL ÀÇ SELECT Äõ¸®ÀÇ ½ÇÇà°ú ±× °á°úÀÇ ÃëµæÀ» ÇÑ ¹ø¿¡ ½Ç½ÃÇÏ·Á¸é
fetchAll()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ ÃÖÃÊÀÇ Àμö¿¡´Â,SELECT ¹®ÀåÀ» ¹®ÀÚ¿·Î ÁöÁ¤ÇÕ´Ï´Ù. ȤÀº, ¹®ÀÚ¿Àº ¾Æ´Ï°í Zend_Db_Select Ŭ·¡½ºÀÇ ¿ÀºêÁ§Æ®¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¿ÀºêÁ§Æ®¸¦ °Ç³×ÁÖ¾úÀ» °æ¿ì´Â, ¾î´ðÅÍÀÇ ³»ºÎ¿¡¼ ±×°ÍÀ» ÀÚµ¿ÀûÀ¸·Î SELECT ¹®ÀåÀÇ ¹®ÀÚ¿·Î º¯È¯ÇÕ´Ï´Ù.
fetchAll()
±×¸®°í ±× ´ÙÀ½À¸·Î ÁöÁ¤ÇÏ´Â Àμö´Â,
SQL ¹®ÁßÀÇ ÆÄ¶ó¹ÌÅÍ Ç÷¹À̽ºÈ¦´õ¸¦ ġȯÇÏ´Â °ªÀÇ ¹è¿ÀÌ µË´Ï´Ù.
·Ê 10.9. fetchAll() ÀÇ »ç¿ë
<?php
$sql = 'SELECT * FROM bugs WHERE bug_id = ?';
$result = $db->fetchAll($sql, 2);
µðÆúÆ®¿¡¼´Â,fetchAll()
ÇÏÇàÀÇ ¹è¿À» µ¹·ÁÁÝ´Ï´Ù.°¢ ÇàÀÇ µ¥ÀÌÅÍ´Â ¿¬»ó ¹è¿ÀÌ µË´Ï´Ù.
·Ã¼ ¹è¿ÀÇ Å°´Â, ·Ä¸íÀ̳ª ȤÀº SELECT
Äõ¸®·Î ÁöÁ¤ÇÑ ¿ÀÇ º°¸íÀÌ µË´Ï´Ù.
µ¹¾Æ°¡ °ªÀÇ Çü½ÄÀ» ´Ù¸¥ °ÍÀ¸·Î ÇÏ·Á¸é
setFetchMode()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
´ëÀÀÇϰí ÀÖ´Â ¸ðµå´Â, ÀÌÇÏÀÇ Á¤¼ö·Î ³ªÅ¸³»Áö´Â °ÍÀÔ´Ï´Ù.
Zend_Db::FETCH_ASSOC: µ¥ÀÌÅ͸¦, ¿¬»ó ¹è¿ÀÇ ¹è¿·Î¼ µ¹·ÁÁÝ´Ï´Ù. ¹è¿ÀÇ Å°´Â, Ä÷³¸íÀ» ¹®ÀÚ¿·Î ³ªÅ¸³½ °ÍÀÌ µË´Ï´Ù. À̰ÍÀº,Zend_Db_Adapter Ŭ·¡½ºÀÇ µðÆúÆ®ÀÇ ÆäÄ¡ ¸ðµåÀÔ´Ï´Ù.
select ±×¸®°í ÃëµæÇÏ´Â À϶÷¾È¿¡ µ¿¸íÀÇ Ä÷³ÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì (¿¹¸¦ µé¾î º¹¼ö Å×À̺íÀ» JOIN ÇßÀ» °æ¿ì µî) (Àº)´Â, ±× À̸§ÀÇ ¿£Æ®¸®´Â Çϳª ¹Û¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù. FETCH_ASSOC ¸ðµå¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â, SELECT Äõ¸®·Î Ä÷³ÀÇ º°¸íÀ» ÁöÁ¤ÇÏ´Â µî, °á°úÀÇ ¹è¿¿¡ ÀÖ¾î¼ÀÇ Å°°¡ ÀÏÀǰ¡ µÇµµ·Ï(µíÀÌ) ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
µðÆúÆ®¿¡¼´Â, ÀÌ·¯ÇÑ ¹®ÀÚ¿Àº µ¥ÀÌŸº£À̽º µå¶óÀ̹ö·ÎºÎÅÍ µ¹·ÁÁÖ¾îÁö´Â °ÍÀ» ±×´ë·Î »ç¿ëÇÕ´Ï´Ù.
Åë»óÀº, À̰ÍÀº RDBMS ¼¹ö·ÎÀÇ Ä÷³¸íÀÌ µÇ°ÚÁö¿ä.
´ë¹®ÀÚ ¼Ò¹®ÀÚ¸¦ ÁöÁ¤ÇÏ·Á¸é ,Zend_Db::CASE_FOLDING
¿É¼ÇÀ» »ç¿ëÇÕ´Ï´Ù.À̰ÍÀº,
¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¶§¿¡ »ç¿ëÇÕ´Ï´Ù.
·Ê10.5. ¡¸ÆÑÅ丮·ÎÀÇ ´ë¹®ÀÚ ¼Ò¹®ÀÚ º¯È¯ ¿É¼ÇÀÇ ÁöÁ¤¡¹
(À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
Zend_Db::FETCH_NUM: µ¥ÀÌÅ͸¦, ¹è¿ÀÇ ¹è¿·Î µ¹·ÁÁÝ´Ï´Ù. ¹è¿Àº ¼öÄ¡ ÷ÀÚ Çü½ÄÀÌ µÇ¾î, Äõ¸®·Î ÁöÁ¤ÇÑ Â÷·Ê·ÎÀÇ À§Ä¡°¡ ۰¡ µË´Ï´Ù.
Zend_Db::FETCH_BOTH: µ¥ÀÌÅ͸¦, ¹è¿ÀÇ ¹è¿·Î µ¹·ÁÁÝ´Ï´Ù. ¹è¿ÀÇ Å°´Â,FETCH_ASSOC ¸ðµå·Î ÀÌ¿ëÇÏ´Â ¹®ÀÚ¿°ú FETCH_NUM ¸ðµå·Î ÀÌ¿ëÇÏ´Â ¼öÄ¡ÀÇ ¾çÂÊ ¸ðµÎ¸¦ Æ÷ÇÔÇÑ °ÍÀÌ µË´Ï´Ù. ¹è¿ÀÇ ¿ä¼Ò¼ö°¡,FETCH_ASSOC (ÀÌ)³ª FETCH_NUM ÀÇ °æ¿ì°¡ ¹è°¡ µÇ´Â °Í¿¡ ÁÖÀÇÇսôÙ.
Zend_Db::FETCH_COLUMN: µ¥ÀÌÅ͸¦, °ªÀÇ ¹è¿·Î µ¹·ÁÁÝ´Ï´Ù. ¹è¿ÀÇ °¢ ¿ä¼ÒÀÇ °ªÀº, °á°ú ¼¼Æ®°¡ ÀÖ´Â ÇϳªÀÇ Ä÷³ÀÇ °ªÀÌ µË´Ï´Ù. µðÆúÆ®¿¡¼´Â, À̰ÍÀº ÃÖÃÊÀÇ (0 ¹øÂ°ÀÇ) Ä÷³ÀÌ µË´Ï´Ù.
Zend_Db::FETCH_OBJ: µ¥ÀÌÅ͸¦, ¿ÀºêÁ§Æ®ÀÇ ¹è¿·Î µ¹·ÁÁÝ´Ï´Ù. µðÆúÆ®ÀÇ Å¬·¡½º´Â,PHP ÀÇ ÆíÀÔ Å¬·¡½º stdClass µË´Ï´Ù.°á°ú ¼¼Æ®ÀÇ Ä÷³Àº, ÀÌ Å¬·¡½ºÀÇ ÇÁ·ÓÆÛƼ·Î¼ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù.
·Ê 10.10. setFetchMode() ÀÇ »ç¿ë
<?php
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$result = $db->fetchAll('SELECT * FROM bugs WHERE bug_id = ?', 2);
// $result (Àº)´Â ¿ÀºêÁ§Æ®ÀÇ ¹è¿ÀÌ µË´Ï´Ù
echo $result[0]->bug_description;
fetchAssoc()
¸Þ¼Òµå´Â,
ÆäÄ¡ ¸ðµåÀÇ ¼³Á¤¿¡ °ü°è¾øÀÌ,
°á°úÀÇ µ¥ÀÌÅ͸¦ ¿¬»ó ¹è¿ÀÇ ¹è¿·Î µ¹·ÁÁÝ´Ï´Ù.
·Ê 10.11. fetchAssoc() ÀÇ »ç¿ë
<?php
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$result = $db->fetchAssoc('SELECT * FROM bugs WHERE bug_id = ?', 2);
// $result (Àº)´Â, ÆäÄ¡ ¸ðµåÀÇ ÁöÁ¤°ú´Â °ü°è¾øÀÌ ¿¬»ó ¹è¿ÀÇ ¹è¿ÀÌ µË´Ï´Ù
echo $result[0]['bug_description'];
fetchCol()
¸Þ¼Òµå´Â,
ÆäÄ¡ ¸ðµåÀÇ ¼³Á¤¿¡ °ü°è¾øÀÌ,
°á°úÀÇ µ¥ÀÌÅ͸¦ °ªÀÇ ¹è¿·Î µ¹·ÁÁÝ´Ï´Ù.
À̰ÍÀº, Äõ¸®ÀÇ ÃÖÃÊÀÇ Ä÷³¸¸À» µ¹·ÁÁÝ´Ï´Ù.
±× ÀÌ¿ÜÀÇ Ä÷³ÀÇ ³»¿ëÀº ÆÄ±âµË´Ï´Ù.
´Ù¸¥ Ä÷³ÀÌ ÇÊ¿äÇÑ °æ¿ì´Â
Ç×10.2.3.4. ¡¸°á°ú ¼¼Æ®·ÎºÎÅÍÀÇ ´ÜÀÏÀÇ Ä÷³ÀÇ Ãëµæ¡¹
(À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
·Ê 10.12. fetchCol() ÀÇ »ç¿ë
<?php
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$result = $db->fetchCol('SELECT bug_description, bug_id FROM bugs WHERE bug_id = ?', 2);
// bug_description (À»)¸¦ Æ÷ÇÔÇØ,bug_id (Àº)´Â Æ÷ÇÔÇÏÁö ¾Ê½À´Ï´Ù
echo $result[0];
fetchPairs()
¸Þ¼Òµå´Â, µ¥ÀÌÅ͸¦ Ű/Ä¡
ÀÇ Æä¾î (¿¬»ó ¹è¿) ÀÇ ¹è¿·Î µ¹·ÁÁÝ´Ï´Ù.
ÀÌ ¿¬»ó ¹è¿ÀÇ Å°´Â,SELECT Äõ¸®°¡ µ¹·ÁÁÖ´Â ÃÖÃÊÀÇ Ä÷³ÀÇ °ªÀÌ µË´Ï´Ù.
¶Ç, ¿¬»ó ¹è¿ÀÇ °ªÀº,SELECT Äõ¸®°¡ µ¹·ÁÁÖ´Â µÎ¹øÂ°ÀÇ Ä÷³ÀÇ °ªÀÌ µË´Ï´Ù.
Äõ¸®·ÎºÎÅÍ µ¹·ÁÁÖ¾îÁö´Â ±× ¿ÜÀÇ Ä÷³Àº ÆÄ±âµË´Ï´Ù.
SELECT Äõ¸®¸¦ Àß ¼³°èÇØ, ÃÖÃÊÀÇ Ä÷³ÀÇ °ªÀÌ ÀÏÀǰ¡ µÇµµ·Ï(µíÀÌ) ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¸¸¾à ÃÖÃÊÀÇ Ä÷³¿¡ Áߺ¹ ÇÏ´Â °ªÀÌ ÀÖÀ¸¸é, ¿¬»ó ¹è¿ÀÇ ¿£Æ®¸®°¡ µ¡¾²±âµÇ¾î ¹ö¸³´Ï´Ù.
·Ê 10.13. fetchPairs() ÀÇ ¿¹
<?php
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$result = $db->fetchPairs('SELECT bug_id, bug_status FROM bugs');
echo $result[2];
fetchRow()
¸Þ¼Òµå´Â,
°á°úÀÇ µ¥ÀÌÅ͸¦ ÇöÀçÀÇ ÆäÄ¡ ¸ðµå·Î µ¹·ÁÁÝ´Ï´Ù.
´ÜÁö, µ¹·ÁÁÖ´Â °ÍÀº °á°ú ¼¼Æ®·ÎºÎÅÍ ÃëµæÇÑ ÃÖÃÊÀÇ ÇุÀÔ´Ï´Ù.
·Ê 10.14. fetchRow() ÀÇ »ç¿ë
<?php
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$result = $db->fetchRow('SELECT * FROM bugs WHERE bug_id = 2');
// $result (Àº)´Â ¿ÀºêÁ§Æ®ÀÇ ¹è¿ÀÌ ¾Æ´Ï°í, ´Ü¼øÇÑ ¿ÀºêÁ§Æ®°¡ µË´Ï´Ù
echo $result->bug_description;
fetchOne()
¸Þ¼Òµå´Â
fetchRow()
(¿Í)°ú fetchCol()
(À»)¸¦ Á¶ÇÕÇÑ °Í °°Àº °ÍÀÔ´Ï´Ù.
°á°ú ¼¼Æ®·ÎºÎÅÍÀÇ ÃÖÃÊÀÇ ÇàÀ¸·ÎºÎÅÍ, ÃÖÃÊÀÇ Ä÷³ÀÇ °ª¸¸À» µ¹·ÁÁÝ´Ï´Ù.
µû¶ó¼, ÀÌ ¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº ¹è¿À̳ª ¿ÀºêÁ§Æ®´Â ¾Æ´Ï°í ´ÜÀÏÀÇ ½ºÄ®¶óÄ¡°¡ µË´Ï´Ù.
·Ê 10.15. fetchOne() ÀÇ »ç¿ë¹ý
<?php
$result = $db->fetchOne('SELECT bug_status FROM bugs WHERE bug_id = 2');
// À̰ÍÀº ´Ü¼øÇÑ ¹®ÀÚ¿ÀÌ µË´Ï´Ù
echo $result;
¾î´ðÅÍ Å¬·¡½º¸¦ »ç¿ëÇϰí, »õ·Î¿î µ¥ÀÌÅ͸¦ µ¥ÀÌŸº£À̽º¿¡ ¾²°Å³ª ±âÁ¸ÀÇ µ¥ÀÌÅÍ·Î º¯°æÀ» ´õÇϰųª ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡¼´Â, ±×°ÍÀ» À§ÇÑ ¸Þ¼Òµå¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡ »õ·Î¿î ÇàÀ» Ãß°¡ÇÏ·Á¸é ,
insert()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
ÃÖÃÊÀÇ Àμö´Â Å×À̺í¸íÀ» ³ªÅ¸³»´Â ¹®ÀÚ¿·Î,
±× ´ÙÀ½ÀÇ Àμö´Â Ä÷³¸í°ú µ¥ÀÌÅÍÀÇ °ªÀ» °ü·ÃÁöÀº ¿¬»ó ¹è¿ÀÌ µË´Ï´Ù.
·Ê 10.16. Å×ÀÌºí¿¡ÀÇ µ¥ÀÌÅÍÀÇ »ðÀÔ
<?php
$data = array(
'created_on' => '2007-03-22',
'bug_description' => 'Something wrong',
'bug_status' => 'NEW'
);
$db->insert('bugs', $data);
µ¥ÀÌÅÍÀÇ ¹è¿·Î ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø Ä÷³¿¡ ´ëÇØ¼´Â µ¥ÀÌŸº£À̽º¿¡ ´ëÇØ¼ ¾Æ¹«°Íµµ Áö½ÃÇÏÁö ¾Ê½À´Ï´Ù. Áï,SQL ÀÇ INSERT ¹®ÀåÀ¸·Î ¿À» ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì¿Í °°Àº °Åµ¿ÀÌ µË´Ï´Ù. DEFAULT ±¸°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é ±× °ªÀÌ Ãß°¡µÇ¾î ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é NULL ÀΠäµË´Ï´Ù.
µðÆúÆ®¿¡¼´Â, µ¥ÀÌÅÍ ¹è¿ÀÇ °ªÀ» »ðÀÔÇÒ ¶§ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, ¾î¶² Á¾·ùÀÇ ½ÃÅ¥·¯Æ¼ ¹®Á¦°¡ ¹ß»ýÇÒ °¡´É¼ºÀ» °æ°¨ÇÕ´Ï´Ù. µ¥ÀÌÅÍ ¹è¿·Î ÁöÁ¤ÇÏ´Â µ¥ÀÌÅÍ¿¡ ´ëÇØ¼´Â, À̽ºÄÉÀÌÇÁ³ª ÄíÆ® 󸮸¦ °í·ÁÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
µ¥ÀÌÅÍ ¹è¿¾ÈÀÇ °ªÀ» SQL ÀÇ ½ÄÀ¸·Î¼ Ãë±ÞÇØ, ÄíÆ® ÇÏ°í ½ÍÁö ¾ÊÀº °æ¿ìµµ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. µðÆúÆ®¿¡¼´Â, ¹®ÀÚ¿·Î¼ °Ç³×ÁØ °ªÀº ¸ðµÎ ¹®ÀÚ¿ ¸®ÅÍ·²·Î¼ ´Ù·ç¾îÁý´Ï´Ù. ±× °ªÀÌ SQL ÀÇ ½ÄÀÎ °Í, Áï ÄíÆ® ÇØ¼± ¾È µÈ´Ù°í ÇÏ´Â °ÍÀ» ÁöÁ¤ÇÏ·Á¸é , ¹®ÀÚ¿Àº ¾Æ´Ï°í Zend_Db_Expr ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¥ÀÌÅÍ ¹è¿¿¡ °Ç³×ÁÝ´Ï´Ù.
·Ê 10.17. Å×ÀÌºí¿¡ÀÇ ½ÄÀÇ »ðÀÔ
<?php
$data = array(
'created_on' => new Zend_Db_Expr('CURDATE()'),
'bug_description' => 'Something wrong',
'bug_status' => 'NEW'
);
$db->insert('bugs', $data);
RDBMS ¿¡ µû¶ó¼´Â, ÁÖŰÀÇ ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)¸¦ ¼Æ÷Æ®Çϰí ÀÖ´Â °Íµµ ÀÖ½À´Ï´Ù.
ÀÌ ¹æ¹ýÀ¸·Î Á¤ÀÇÇÑ Å×ÀÌºí¿¡ »õ·Î¿î ÇàÀ» INSERT ±×·¯ÀÚ(¸é),
ÁÖŰÀÇ °ªÀÌ ÀÚµ¿ÀûÀ¸·Î »ý¼ºµË´Ï´Ù.
insert()
¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº, ¸¶Áö¸·¿¡ Ãß°¡µÇ¾ú´Ù ID
±×·³¾ø½À´Ï´Ù.
±× Å×ÀÌºí¿¡´Â ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Ä÷³ÀÌ ¾øÀ»Áöµµ ¸ð¸£±â ¶§¹®ÀÔ´Ï´Ù.
µ¹¾Æ°¡ °ªÀº, º¯°æµÈ Çà¼ö (Åë»óÀº 1 ÀÔ´Ï´Ù) µË´Ï´Ù.
±× Å×À̺í·Î ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ ÁÖ۸¦ Á¤ÀÇÇϰí ÀÖ´Â °æ¿ì´Â,
µ¥ÀÌÅ͸¦ Ãß°¡ÇÑ ´ÙÀ½¿¡ lastInsertId()
¸Þ¼Òµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.ÀÌ ¸Þ¼Òµå´Â,
ÇöÀçÀÇ µ¥ÀÌŸº£À̽º Á¢¼Ó¿¡ ´ëÇØ ¸¶Áö¸·¿¡ ÀÚµ¿ »ý¼ºµÈ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
·Ê 10.18. ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°¿¡ ÀÖ¾î¼ÀÇ lastInsertId() ÀÇ »ç¿ë¹ý
<?php
$db->insert('bugs', $data);
// ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Ä÷³À¸·Î ¸¶Áö¸·¿¡ »ý¼ºµÈ °ªÀ» µ¹·ÁÁÝ´Ï´Ù
$id = $db->lastInsertId();
RDBMS ¿¡ µû¶ó¼´Â, ¼ø¼¸¦ ¼Æ÷Æ®Çϰí ÀÖ´Â °Íµµ ÀÖ½À´Ï´Ù.
¼ø¼¸¦ »ç¿ëÇϰí, ÁÖŰ¿ëÀÇ ÀÏÀÇÀÎ °ªÀ» »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼ø¼¸¦ ¼Æ÷Æ®Çϱâ À§Çؼ,lastInsertId()
±×·³ ¿É¼ÇÀÇ ¹®ÀÚ¿ Àμö¸¦ 2 °³ ¹Þ¾Æ µéÀ̵µ·Ï(µíÀÌ) Çϰí ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ Àμö¿¡´Â, °¢°¢ Å×À̺í¸í°ú Ä÷³¸íÀ» ÁöÁ¤ÇÕ´Ï´Ù.
¼ø¼ÀÇ À̸§Àº, ÀÌ Å×À̺í¸í°ú Ä÷³¸íÀ» ¿¬°áÇßÁö¸¸ ÈÄ¿¡
"_seq" (À»)¸¦ ºÎ°¡ÇÑ °ÍÀÌ µË´Ï´Ù.À̰ÍÀº,PostgreSQL
ÇÏÁö¸¸ SERIAL ÇüÅÂÀÇ Ä÷³¿¡ ´ëÇØ¼ ÀÚµ¿ »ý¼ºÇÏ´Â ¼ø¼¸íÀÇ ±Ô¾à¿¡ ÀǰÅÇϰí ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î,"bugs" Å×À̺íÀÇ ÁÖŰ Ä÷³ÀÌ
"bug_id" ÀÎ °æ¿ì´Â,"bugs_bug_id_seq"
(ÀÌ)¶ó´Â À̸§ÀÇ ¼ø¼¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù.
·Ê 10.19. ¼ø¼¿¡ ÀÖ¾î¼ÀÇ lastInsertId() ÀÇ »ç¿ë¹ý
<?php
$db->insert('bugs', $data);
// ¼ø¼ 'bugs_bug_id_seq' ÇÏÁö¸¸ ¸¶Áö¸·¿¡ »ý¼ºÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù
$id = $db->lastInsertId('bugs', 'bug_id');
// À̰ÍÀº, ¼ø¼ 'bugs_seq' ÇÏÁö¸¸ ¸¶Áö¸·¿¡ »ý¼ºÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù
$id = $db->lastInsertId('bugs');
¸¸¾à ÀÌ ¸í¸í ±Ô¾à°ú´Â ´Ù¸¥ À̸§ÀÇ ¼ø¼¸¦ »ç¿ëÇϰí ÀÖ´Â °æ¿ì´Â, ´ë½Å¿¡
lastSequenceId()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ Àμö¿¡´Â, ¼ø¼ÀÇ À̸§À» Á÷Á¢ ÁöÁ¤ÇÕ´Ï´Ù.
·Ê 10.20. lastSequenceId() ÀÇ »ç¿ë¹ý
<?php
$db->insert('bugs', $data);
// ¼ø¼ 'bugs_id_gen' ÇÏÁö¸¸ ¸¶Áö¸·¿¡ »ý¼ºÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù
$id = $db->lastSequenceId('bugs_id_gen');
¼ø¼¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê´Ù RDBMS, ¿¹¸¦ µé¾î MySQL (ÀÌ)³ª
Microsoft SQL Server,SQLite µîÀÇ °æ¿ì,
lastInsertId() ¸Þ¼ÒµåÀÇ Àμö´Â ¹«½ÃµË´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº, ÇöÀçÀÇ Á¢¼ÓÀ¸·Î ¸¶Áö¸·¿¡ ½ÇÇàµÇ¾ú´Ù
INSERT Á¶ÀÛÀÌ »ý¼ºÇÑ °ªÀÌ µË´Ï´Ù.¶Ç, ÀÌ·¯ÇÑ RDBMS ±×·³
lastSequenceId() ¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº Ç×»ó null
µË´Ï´Ù.
![]() |
"SELECT MAX(id) FROM table" ÀÚ ¾ÈµË´Ï±î? |
---|---|
ºÐ¸íÈ÷ ÀÌ Äõ¸®´Â, ¸¶Áö¸·¿¡ Å×ÀÌºí¿¡ Ãß°¡µÈ ÁÖŰÀÇ °ªÀ» µ¹·ÁÁֱ⵵ ÇÕ´Ï´Ù. ±×·¯³ª À̰ÍÀº, º¹¼öÀÇ Å¬¶óÀÌ¾ðÆ®°¡ µ¥ÀÌŸº£À̽º¿¡ ·¹Äڵ带 Ãß°¡ÇÑ´Ù°í Çϴ ȯ°æ¿¡¼´Â ¾ÈÀüÇÏÁö´Â ¾Ê½À´Ï´Ù. Áï, µ¥ÀÌÅ͸¦ Ãß°¡ÇÏ°í ³ª¼ MAX(id) ÀÇ °ªÀ» ÃëµæÇÒ ¶§±îÁö ¿¡ ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®°¡ ´Ù¸¥ µ¥ÀÌÅ͸¦ Ãß°¡ÇÒ °¡´É¼ºÀÌ ÀÖ´Â °ÍÀÔ´Ï´Ù. ÀÌ °æ¿ì, Äõ¸®°¡ µ¹·ÁÁÖ´Â °á°ú´Â ´ç½ÅÀÌ ½ÇÁ¦·Î Ãß°¡ÇÑ ÇàÀÇ ID °ú´Â ´Þ¸®, ´©±º°¡ ´Ù¸¥ »ç¶÷ÀÌ Ãß°¡ÇÑ ÇàÀÇ ID (ÀÌ)°¡ µÇ¾î ¹ö¸³´Ï´Ù. °Ô´Ù°¡, ¸¸¾à ±×·¯ÇÑ »óȲÀÌ µÇ¾î ÀÖ¾ú´Ù°í ÇØµµ ´ç½Å¿¡°Ô´Â ±×°ÍÀ» ¾Ë ¼ö ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î "repeatable read" (¿Í)°ú °°Àº Æ®·£Àè¼Ç(transaction) ºÐ¸® ¸ðµå¸¦ »ç¿ëÇϸé, ÀÌ À§Ç輺À» ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù.±×·¯³ª, ÀÌ ·¹º§ÀÇ Æ®·£Àè¼Ç(transaction) ºÐ¸®¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê´Ù RDBMS µµ ÀÖ½À´Ï´Ù.¶Ç, ±× ¾îÇø®ÄÉÀÌ¼Ç ÀÚü°¡ ´õ ´À½¼ÇÑ ·¹º§ÀÇ Æ®·£Àè¼Ç(transaction) ºÐ¸® ¸ðµå¸¦ »óÁ¤ÇØ ÀÛ¼ºµÇ°í ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. °Ô´Ù°¡ »õ·Î¿î ÁÖŰÀÇ °ªÀ» »ý¼ºÇÒ ¶§¿¡ "MAX(id)+1" (¿Í)°ú °°Àº ½ÄÀ» »ç¿ëÇÏ´Â °Íµµ ¶È°°ÀÌ À§ÇèÇÕ´Ï´Ù.µÎ Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ µ¿½Ã¿¡ ÀÌ Äõ¸®¸¦ ½ÇÇàÇϸé, ¾î´ÀÂÊÀ̳ª °°Àº °ªÀ» ÃëµæÇÏ°Ô µÇ¾î, °°Àº °ªÀ¸·Î INSERT (À»)¸¦ ÇàÇÏ°Ô µÇ¾î ¹ö¸³´Ï´Ù. ¾î¶² RDBMS ±×·¸Áö¸¸, ÀÏÀÇÀÎ °ªÀ» »ý¼ºÇÏ´Â ±â´ÉÀ̳ª ¸¶Áö¸·¿¡ »ý¼ºÇÑ °ªÀ» µ¹·ÁÁÖ´Â ±â´ÉÀº °¡Áö°í ÀÖ½À´Ï´Ù. ÀÌ ±â´ÉÀº Æ®·£Àè¼Ç(transaction) ºÐ¸® ·¹º§ (¿Í)´Â °ü°è¾ø´Â °ÍÀ¸·Î ±â´ÉÇÒ °ÍÀ̹ǷÎ, µÎ Ŭ¶óÀÌ¾ðÆ®·Î °°Àº °ªÀÌ Áߺ¹ ÇØ ¹ö¸± °ÍÀº ¾ø½À´Ï´Ù. ¶Ç, ´Ù¸¥ Ŭ¶óÀÌ¾ðÆ®·Î ÀÛ¼ºÇÑ °ªÀÌ ´ç½ÅÀÇ Á¢¼ÓÀ¸·Î ¡¸¸¶Áö¸·¿¡ »ý¼ºÇÑ °ª¡¹À¸·Î ÇØ¼ µ¹·ÁÁÖ¾îÁö±âµµ ¾ø½À´Ï´Ù. |
µ¥ÀÌŸº£À̽ºÀÇ Å×À̺íÀÇ ÇàÀ» °»½ÅÇÏ·Á¸é , ¾î´ðÅÍÀÇ
update()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡ÀÇ Àμö´Â
3 °³ÀÔ´Ï´Ù.¿ì¼± óÀ½Àº Å×À̺íÀÇ À̸§,
±× ´ÙÀ½Àº Ä÷³¸íÀ¸·Î »õ·Î¿î °ªÀ» °ü·Ã ÁöÀº ¿¬»ó ¹è¿ÀÌ µË´Ï´Ù.
¹è¿·Î ÁöÁ¤ÇÑ °ªÀº, ¹®ÀÚ¿ ¸®ÅÍ·²·Î¼ ´Ù·ç¾îÁý´Ï´Ù. µ¥ÀÌÅÍ ¹è¿·Î SQL ÀÇ ½ÄÀ» Ãë±ÞÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â Ç×10.1.4.1. ¡¸µ¥ÀÌÅÍÀÇ »ðÀÔ¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
3¹øÂ°ÀÇ Àμö´Â,SQL ÀÇ ½ÄÀ» ¹®ÀÚ¿·Î ÁöÁ¤ÇÕ´Ï´Ù. À̰ÍÀÌ, º¯°æÇÏ´Â ÇàÀ» Á¼È÷±â À§ÇÑ Á¶°ÇÀÌ µË´Ï´Ù. ¿©±â¼ ÁöÁ¤ÇÑ °ªÀ̳ª ½Äº°ÀÚ¿¡ ´ëÇØ¼´Â, ÄíÆ®³ª À̽ºÄÉÀÌÇÁ´Â ÇàÇÏÁö ¾Ê½À´Ï´Ù. ¾î¶°ÇÑ µ¿ÀûÀÎ °ªÀ» »ç¿ëÇÏ´Â °æ¿ì´Â, ±× ³»¿ëÀÌ ¾ÈÀüÇÑ °ÍÀ» È®ÀÎÇϵµ·Ï ÇսôÙ. Ç×10.1.5. ¡¸°ªÀ̳ª ½Äº°ÀÚÀÇ ÄíÆ®¡¹ ±×¸®°í ¼³¸íÇϰí ÀÖ´Â ¸Þ¼Òµå¸¦ »ç¿ëÇϸé ÁÁÀ» °ÍÀÔ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº, °»½Å Á¶ÀÛ¿¡ ÀÇÇØ¼ º¯°æµÈ ÇàÀÇ ¼ö°¡ µË´Ï´Ù.
·Ê 10.21. ÇàÀÇ °»½Å
<?php
$data = array(
'updated_on' => '2007-03-23',
'bug_status' => 'FIXED'
);
$n = $db->update('bugs', $data, 'bug_id = 2');
3¹øÂ°ÀÇ Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â, Å×À̺íÀÇ ¸ðµç ÇàÀÌ ÁöÁ¤ÇÑ °ªÀ¸·Î °»½ÅµË´Ï´Ù.
3¹øÂ°ÀÇ Àμö¿¡ ¹®ÀÚ¿ÀÇ ¹è¿À» ÁöÁ¤Çϸé, °¢ ¿ä¼ÒÀÇ ³»¿ëÀ»
AND
¿¬»êÀÚ·Î ¿¬°áÇØ »ç¿ëÇÕ´Ï´Ù.
·Ê 10.22. ½ÄÀÇ ¹è¿À» ÁöÁ¤ÇÏ´Â °Í¿¡ ÀÇÇÑ ÇàÀÇ °»½Å
<?php
$data = array(
'updated_on' => '2007-03-23',
'bug_status' => 'FIXED'
);
$where[] = "reported_by = 'goofy'";
$where[] = "bug_status = 'OPEN'";
$n = $db->update('bugs', $data, $where);
// ½ÇÇàµÈ´Ù SQL (Àº)´Â, ÀÌ¿Í °°ÀÌ µË´Ï´Ù
// UPDATE "bugs" SET "update_on" = '2007-03-23', "bug_status" = 'FIXED'
// WHERE ("reported_by" = 'goofy') AND ("bug_status" = 'OPEN')
µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡¼ ÇàÀ» »èÁ¦ÇÏ·Á¸é
delete()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡ °Ç³×ÁÖ´Â Àμö´Â 2 °³·Î,
ÃÖÃÊÀÇ Àμö´Â Å×À̺í¸íÀ» ³ªÅ¸³»´Â ¹®ÀÚ¿ÀÔ´Ï´Ù.
µÎ¹øÂ°ÀÇ Àμö´Â,SQL ÀÇ ½ÄÀ» ¹®ÀÚ¿·Î ÁöÁ¤ÇÕ´Ï´Ù. À̰ÍÀÌ, »èÁ¦ÇÏ´Â ÇàÀ» Á¼È÷±â À§ÇÑ Á¶°ÇÀÌ µË´Ï´Ù. ¿©±â¼ ÁöÁ¤ÇÑ °ªÀ̳ª ½Äº°ÀÚ¿¡ ´ëÇØ¼´Â, ÄíÆ®³ª À̽ºÄÉÀÌÇÁ´Â ÇàÇÏÁö ¾Ê½À´Ï´Ù. ¾î¶°ÇÑ µ¿ÀûÀÎ °ªÀ» »ç¿ëÇÏ´Â °æ¿ì´Â, ±× ³»¿ëÀÌ ¾ÈÀüÇÑ °ÍÀ» È®ÀÎÇϵµ·Ï ÇսôÙ. Ç×10.1.5. ¡¸°ªÀ̳ª ½Äº°ÀÚÀÇ ÄíÆ®¡¹ ±×¸®°í ¼³¸íÇϰí ÀÖ´Â ¸Þ¼Òµå¸¦ »ç¿ëÇϸé ÁÁÀ» °ÍÀÔ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº, »èÁ¦ Á¶ÀÛ¿¡ ÀÇÇØ¼ º¯°æµÈ ÇàÀÇ ¼ö°¡ µË´Ï´Ù. ¡¡
µÎ¹øÂ°ÀÇ Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â, Å×À̺íÀÇ ¸ðµç ÇàÀ» »èÁ¦ÇÕ´Ï´Ù.
µÎ¹øÂ°ÀÇ Àμö¿¡ ¹®ÀÚ¿ÀÇ ¹è¿À» ÁöÁ¤Çϸé, °¢ ¿ä¼ÒÀÇ ³»¿ëÀ»
AND
¿¬»êÀÚ·Î ¿¬°áÇØ »ç¿ëÇÕ´Ï´Ù.
SQL (À»)¸¦ ÀÛ¼ºÇÒ ¶§ ,PHP ÀÇ º¯¼öÀÇ °ªÀ» SQL ÀÇ ½Ä¿¡¼ »ç¿ëÇØ¾ß ÇÏ´Â °Íµµ ÀÖ°ÚÁö¿ä. À̰ÍÀº À§ÇèÇÑ Ã³¸®ÀÔ´Ï´Ù.¿Ö³ÄÇϸé,PHP ÀÇ ¹®ÀÚ¿¾È¿¡´Â ¿¹¸¦ µé¾î ÄíÆ® ±âÈ£¿Í °°Àº Ư¼ö ¹®ÀÚ°¡ Æ÷ÇԵǾî ÀÖ´Â ÀÏÀÌ ÀÖ¾î, ¿Ï¼ºµÈ´Ù SQL ÇÏÁö¸¸ ÀÌ»óÇÑ °ÍÀÌ µÇ¾î ¹ö¸± °¡´É¼ºÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ÀÌÇÏÀÇ ÄÚµå·Î ÀÛ¼ºÇß´Ù SQL (Àº)´Â, ÄíÆ® ¹®ÀÚÀÇ ´ëÀÀÀÌ ÀÌ»óÇÑ °ÍÀÌ µË´Ï´Ù.
$name = "O'Reilly";
$sql = "SELECT * FROM bugs WHERE reported_by = '$name'";
echo $sql;
// SELECT * FROM bugs WHERE reported_by = 'O'Reilly'
ÇÑÃþ ´õ ³ª»Û °Í¿¡, ÀÌ·¯ÇÑ Äڵ带 ¾Ç¿ë µÇ¸é ´ç½ÅÀÇ ¾îÇø®ÄÉÀ̼ÇÀÌ °ø°ÝÀÇ ÇÇÇØ¸¦ ¹Þ°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù. PHP ÀÇ º¯¼öÀÇ °ªÀ» HTTP ÆÄ¶ó¹ÌÅ͵¼ ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸é, SQL Äõ¸®¸¦ Á¶ÀÛÇØ ¿¹±âÄ¡ ¸øÇÑ ÀÏÀ» Çϼйö¸± °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù (¿¹¸¦ µé¾î, ±× »ç¶÷ÀÇ ±ÇÇÑ¿¡¼´Â ¾Èº¸¿©¾ß ÇÒ µ¥ÀÌÅ͸¦ µéÄÑ ¹ö¸®´Â µî). À̰ÍÀº, ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÃÅ¥·¯Æ¼ ¹®Á¦·Î¼´Â ¸Å¿ì À¯¸íÇÑ ¼ö¹ýÀ¸·Î, "SQL ÀÎÁ§¼Ç" (À¸)·Î ºÒ¸®°í ÀÖ½À´Ï´Ù ( http://ja.wikipedia.org/wiki/SQL%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3 (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ).
Zend_Db Adapter Ŭ·¡½ºÀÇ Á¦°øÇÏ´Â Æí¸®ÇÑ ÇÔ¼ö¸¦ »ç¿ëÇϸé, ´ç½ÅÀÇ PHP Äڵ尡 SQL ÀÎÁ§¼Ç °ø°ÝÀ» ¹Þ´Â À§Ç輺À» °æ°¨ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °ø°ÝÀ» ȸÇÇÇÏ´Â ¹æ¹ýÀº,PHP ÀÇ ÄíÆ® ¹®ÀÚ¿Í °°Àº Ư¼ö ¹®ÀÚ¸¦ ¿Ã¹Ù¸£°Ô À̽ºÄÉÀÌÇÁ ÇÏ°í ³ª¼ SQL ¿¡ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, °©ÀÚ±â (ȤÀº °íÀÇ·Î) SQL ¿¡ Ư¼ö ¹®ÀÚ°¡ ÆÄ¹¯Çô ¹ö¸®´Â °ÍÀ» ¸·½À´Ï´Ù.
quote()
¸Þ¼Òµå´Â, Àμö·Î¼ ¹®ÀÚ¿À» ¹Þ½À´Ï´Ù.
±×¸®°í ±× ¹®ÀÚ¿¾ÈÀÇ Æ¯¼ö ¹®ÀÚ¸¦ À̽ºÄÉÀÌÇÁ ÇÑ ´ÙÀ½,
¾ç´ÜÀ» ´Ü¶ôÁö¾î ¹®ÀÚ·Î µÑ·¯½Ñ °ÍÀ» µ¹·ÁÁÝ´Ï´Ù.
À̽ºÄÉÀÌÇÁ 󸮴Â, »ç¿ëÇϰí ÀÖ´Ù RDBMS
¿¡ ¸ÂÃß¾î ÀûÀýÈ÷ ÇàÇØÁý´Ï´Ù.
¹®ÀÚ¿ÀÇ ¾ç´Ü¿¡ »ç¿ëÇÏ´Â ´Ü¶ô ¹®ÀÚ´Â, Ç¥ÁØÀÇ SQL
±×·³ ½Ì¸£Å©Æ® ('
) µË´Ï´Ù.
·Ê 10.24. quote() ÀÇ »ç¿ë¹ý
<?php
$name = $db->quote("O'Reilly");
echo $name;
// 'O'Reilly'
$sql = "SELECT * FROM bugs WHERE reported_by = $name";
echo $sql;
// SELECT * FROM bugs WHERE reported_by = 'O'Reilly'
quote()
ÀÇ µ¹¾Æ°¡ °ª¿¡´Â, ¹®ÀÚ¿ÀÇ ¾ç´Ü¿¡ ´Ü¶ôÁö¾î ¹®ÀÚ°¡ Ãß°¡µÇ°í ÀÖ´Â °Í¿¡ ÁÖÀÇÇսôÙ.
À̰ÍÀº, ¿¹¸¦ µé¾î
mysql_real_escape_string()
(¿Í)°ú °°Àº À̽ºÄÉÀÌÇÁ¿ë ÇÔ¼öÀÇ °Åµ¿°ú´Â ´Ù¸¨´Ï´Ù.
°ªÀ» ÄíÆ® ÇÒ±î ÇÏÁö ¾ÊÀ»±î´Â,SQL ÀÇ µ¥ÀÌÅÍÇü¿¡ µû¶ó¼ ´Ù¸¨´Ï´Ù.
¿¹¸¦ µé¾î, Á¤¼öÄ¡¸¦ ÄíÆ® ÇØ ¹ö¸®¸é
¼öÄ¡Çü Ä÷³À̳ª °è»ê½Ä¿¡¼ ÀÌ¿ëÇÒ ¼ö ¾ø°Ô µÇ¾î ¹ö¸°´Ù°í ÇÑ´Ù
RDBMS µµ ÀÖ½À´Ï´Ù.Áï, ´ÙÀ½°ú °°Àº SQL
ÇÏÁö¸¸ ¿¡·¯°¡ µÇ¾î ¹ö¸®´Â ½ÇÀåÀÌ ÀÖ´Â °ÍÀÔ´Ï´Ù.
¿©±â¼,intColumn
ÀÇ µ¥ÀÌÅÍÇüÀº
INTEGER
ÀÎ °ÍÀ¸·Î ÇÕ´Ï´Ù.
SELECT * FROM atable WHERE intColumn = '123'
quote()
¸Þ¼Òµå·Î ¿É¼ÇÀÇ
2 ¹øÂ°ÀÇ Àμö¸¦ »ç¿ëÇϸé,
SQL ÀÇ µ¥ÀÌÅÍÇü¿¡ µû¶ó ÄíÆ® ÇÒÁö¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
·Ê 10.25. quote() (À¸)·ÎÀÇ SQL µ¥ÀÌÅÍÇüÀÇ ÁöÁ¤
<?php
$value = '1234';
$sql = 'SELECT * FROM atable WHERE intColumn = '
. $db->quote($value, 'INTEGER');
°¢ Zend_Db_Adapter Ŭ·¡½º¿¡¼´Â, ±× RDBMS
¿ë¹«ÀÇ SQL ¼öÄ¡ µ¥ÀÌÅÍÇüÀÇ À̸§ÀÌ ÄÚµåÈ µÇ°í ÀÖ½À´Ï´Ù.
±×°Íµé À̿ܿ¡µµ
Zend_Db::INT_TYPE
(ÀÌ)³ª
Zend_Db::BIGINT_TYPE
, ±×¸®°í
Zend_Db::FLOAT_TYPE
±×·¸´Ù°í ÇÏ´Â Á¤¼ö°¡ ÁغñµÇ¾î ÀÖ¾î
À̰͵éÀ» »ç¿ëÇϸé RDBMS ¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â Äڵ带 ¾µ ¼ö ÀÖ½À´Ï´Ù.
Zend_Db_Table (Àº)´Â, Å×À̺íÀÇ Å°°¡ µÇ´Â Ä÷³À» »ç¿ëÇÒ ¶§
ÀÚµ¿ÀûÀ¸·Î SQL µ¥ÀÌÅÍÇüÀ» quote()
(À¸)·Î ÁöÁ¤ÇÕ´Ï´Ù.
ÄíÆ®¸¦ »ç¿ëÇÏ´Â Àå¸éÀ¸·Î Çϰí ÀÖ¾îÄ¡¹ÙÀÀ ÀÚÁÖ ÀÖ´Â °ÍÀÌ,
PHP ÀÇ º¯¼öÀÇ °ªÀ» SQL ÀÇ ½ÄÀ̳ª ¹®Áß¿¡¼ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
quoteInto()
¸Þ¼Òµå¸¦ »ç¿ëÇϸé, ÀÌ Ã³¸®¸¦ ÇÑ ¹ø¿¡ ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
ÀÌ ¸Þ¼Òµå°¡ ¹Þ´Â Àμö´Â µÑÀÔ´Ï´Ù.
¿ì¼± ÃÖÃÊÀÇ Àμö·Î¼ Ç÷¹À̽ºÈ¦´õ ±âÈ£ (?
)
(À»)¸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿À» ÁöÁ¤ÇØ, ´ÙÀ½ÀÇ Àμö·Î PHP ÀÇ º¯¼öµîÀÇ °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù.
¿©±â¼ ÁöÁ¤ÇÑ °ªÀ¸·Î, Ç÷¹À̽ºÈ¦´õÀÇ ºÎºÐÀ» ¿Å°Ü³õ½À´Ï´Ù.
Ç÷¹À̽ºÈ¦´õ¿ëÀÇ ±âÈ£´Â, ¸¹Àº RDBMS
±×¸®°í ÆÄ¶ó¹ÌÅͷμ »ç¿ëÇϰí ÀÖ´Â ±âÈ£¿Í °°½À´Ï´Ù.±×·¯³ª,
quoteInto()
¸Þ¼Òµå´Â ¾îµð±îÁö³ª ÆÄ¶ó¹ÌÅ͸¦¿¡¹Â·¹ÀÌÆ® Çϰí ÀÖÀ» »ÓÀÔ´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â ´Ü¼øÇÏ°Ô ¹®ÀÚ¿¾È¿¡ °ªÀ» ´øÁ®,
Ư¼ö ¹®ÀÚ¸¦ À̽ºÄÉÀÌÇÁ ÇØ ¾ç´ÜÀ» ÄíÆ® ÇÑ´Ù°í Çϴ ó¸®¸¸À» ½Ç½ÃÇÕ´Ï´Ù.
RDBMS ¿¡ ÀÖ¾î¼ÀÇ ÆÄ¶ó¹ÌÅÍ¿Í °°ÀÌ,
SQL ¹®ÀÚ¿°ú °ªÀ» ºÐ¸®ÇØ SQL ¸¸À» »çÀü¿¡ RDBMS
¼¹ö·Î ÆÛ½º ÇÑ´Ù°í ÇÑ °ÍÀº ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.
·Ê 10.26. quoteInto() ÀÇ »ç¿ë¹ý
<?php
$sql = $db->quoteInto("SELECT * FROM bugs WHERE reported_by = ?", "O'Reilly");
echo $sql;
// SELECT * FROM bugs WHERE reported_by = 'O'Reilly'
quoteInto()
ÀÇ ¿É¼ÇÀÇ
3 ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇϸé,SQL ÀÇ µ¥ÀÌÅÍÇüÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼öÄ¡ÇüÀº ÄíÆ®¸¦ ÇÏÁö ¾Ê°í, ±× ÀÌ¿ÜÀÇ ÇüÅ¿¡ ´ëÇØ¼´Â ÄíÆ®¸¦ ½Ç½ÃÇÕ´Ï´Ù.
·Ê 10.27. quoteInto() (À¸)·ÎÀÇ SQL µ¥ÀÌÅÍÇüÀÇ ÁöÁ¤
<?php
$sql = $db->quoteInto("SELECT * FROM bugs WHERE bug_id = ?", '1234', 'INTEGER');
echo $sql;
// SELECT * FROM bugs WHERE reported_by = 1234
º¯¼ö¸¦ »ç¿ëÇÒ °¡´É¼ºÀÌ ÀÖ´Â °ÍÀº,SQL ¹®ÁßÀÇ °ª¸¸À̶ó°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. SQL ¹®Áß¿¡¼ÀÇ Å×À̺í¸íÀ̳ª Ä÷³¸íµîÀÇ ½Äº°Àڷμ PHP ÀÇ º¯¼ö¸¦ »ç¿ëÇÏ´Â °æ¿ìµµ, ¶È°°ÀÌ ÄíÆ® ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. µðÆúÆ®¿¡¼´Â,SQL ÀÇ ½Äº°ÀÚ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹®ÀÚ´Â PHP µîÀÇ ÇÁ·Î±×·¥ ¾ð¾îÀÇ ±ÔÄ¢°ú ´à¾Æ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ½Äº°ÀÚ¿¡´Â °ø¹é ¹®ÀÚ³ª ±âÈ£¸¦ »ç¿ëÇÒ ¼ö ¾ø°í, ¶Ç ¾ËÆÄºª ÀÌ¿ÜÀÇ ¹®ÀÚµµ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. SQL ÀÇ ¹®¹ý»ó Ưº°ÇÑ Àǹ̸¦ °¡Áö´Â ´Ü¾î·Î¼ ¿¹¾àµÇ°í ÀÖ´Â °Íµµ, ±×´ë·Î´Â ½Äº°Àڷμ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
±×·¯³ª, ÀûÀýÇÑ ´Ü¶ô ¹®ÀÚ·Î ÄíÆ® Çϸé, ½Äº°Àڷμ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹®ÀÚÀÇ ÆøÀÌ ³Ð¾îÁý´Ï´Ù. º»·¡ ½Äº°Àڷμ »ç¿ëÇÒ ¼ö ¾ø´Â ¹®ÀÚ¸¦ Æ÷ÇÔÇϰí À־, ÀûÀýÇÑ Çü½Ä¿¡¼ ÄíÆ® ÇÏ´Â °ÍÀ¸·Î SQL ÀÇ ½Äº°Àڷμ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î, °ø¹éÀ̳ª ±âÈ£µîÀ» »ç¿ëÇÒ ¼öµµ ÀÖ°í, SQL ±×¸®°í ¿¹¾à¾î(reserved word)·Î¼ ÁöÁ¤µÇ¾î ÀÖ´Â ´Ü¾î¿©µµ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
quoteIdentifier()
¸Þ¼ÒµåÀÇ ±â´ÉÀº
quote()
(¿Í)°ú ´à¾Æ ÀÖ½À´Ï´Ù¸¸,
ÀÌ ¸Þ¼Òµå´Â »ç¿ëÇϰí ÀÖ´Â ¾î´ðÅÍÀÇ ÇüÅ¿¡ ÀÀÇÑ ½Äº°ÀÚ ´Ü¶ô ¹®ÀÚ¸¦ ºÎ°¡ÇÕ´Ï´Ù.
¿¹¸¦ µé¾î, Ç¥ÁØ SQL ±×·³ ´Ùºê¸£Å©Æ®
("
) (À»)¸¦ ´Ü¶ô ¹®Àڷμ »ç¿ëÇÕ´Ï´Ù.
¸¹Àº RDBMS ÇÏÁö¸¸ À̰Ϳ¡ µû¶ó¼ ÀÖ½À´Ï´Ù.
MySQL ÀÇ °æ¿ì´Â, µðÆúÆ®¿¡¼´Â ¹ÚũũƮ
(`
) (À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
quoteIdentifier()
¸Þ¼Òµå´Â ¶Ç,
¹®ÀÚ¿ Àμö³»ÀÇ Æ¯¼ö ¹®ÀÚÀÇ À̽ºÄÉÀÌÇÁµµ ½Ç½ÃÇÕ´Ï´Ù.
·Ê 10.28. quoteIdentifier() ÀÇ »ç¿ë¹ý
<?php
// Å×À̺í¸í¿¡,SQL ÀÇ ¿¹¾à¾î(reserved word)¸¦ »ç¿ëÇÕ´Ï´Ù
$tableName = $db->quoteIdentifier("order");
$sql = "SELECT * FROM $tableName";
echo $sql
// SELECT * FROM "order"
ÄíÆ® Çϰí ÀÖÁö ¾Ê´Â °æ¿ì¿Í´Â ´Þ¶ó, ÄíÆ® ÇÑ ½Äº°ÀÚ´Â ´ë¹®ÀÚ ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏ°Ô µË´Ï´Ù. µû¶ó¼, ÄíÆ® ÇÑ ½Äº°ÀÚ¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â ´ë¹®ÀÚ ¼Ò¹®ÀÚÀÇ ÁöÁ¤µµ Æ÷ÇÔÇØ ½Äº°ÀÚ¸¦ Á¦´ë·Î ±â¼úÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
´ëºÎºÐÀÇ °æ¿ì´Â Zend_Db Ŭ·¡½º¿¡¼ ÀÚµ¿ÀûÀ¸·Î SQL
(À»)¸¦ »ý¼ºÇÏ°Ô µÇ°ÚÁö¿ä.µðÆúÆ®¿¡¼´Â,
¸ðµç ½Äº°ÀÚ°¡ ÀÚµ¿ÀûÀ¸·Î ÄíÆ® µË´Ï´Ù.
ÀÌ °Åµ¿À» º¯°æÇÏ·Á¸é , ¿É¼Ç
Zend_Db::AUTO_QUOTE_IDENTIFIERS
(À»)¸¦ º¯°æÇÕ´Ï´Ù.À̰ÍÀº, ¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¶§·Î ÁöÁ¤ÇÕ´Ï´Ù.
·Ê10.6. ¡¸ÆÑÅ丮·ÎÀÇ ÀÚµ¿ ÄíÆ®¿ÀÇÁ¼ÇÀÇ ÁöÁ¤¡¹
(À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
µ¥ÀÌŸº£À̽º¿¡´Â ¡¸Æ®·£Àè¼Ç(transaction)¡¹¶ó°í ºÒ¸®´Â ³í¸®ÀûÀÎ ÀÛ¾÷ ´ÜÀ§°¡ ÀÖ½À´Ï´Ù. º¹¼öÀÇ Å×ÀÌºí¿¡ °ÉÄ¡´Â Á¶ÀÛµîÀ» ÀϰýÇØ °»½Å (À§Å¹) Çϰųª ÀϰýÇØ Ãë¼Ò (·Ñ¹é(rollback)) Çϰųª ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. µ¥ÀÌŸº£À̽º µå¶óÀ̹ö°¡ Æ®·£Àè¼Ç(transaction)¸¦ ¾Ï¹¬ÀûÀ¸·Î ¼Æ÷Æ®Çϰí ÀÖ´Â °æ¿ì´Â, ¸ðµç Äõ¸®°¡ Æ®·£Àè¼Ç(transaction)³»¿¡¼ ½ÇÇàµË´Ï´Ù. À̰ÍÀ»ÀÚµ¿ À§Å¹¸ðµå¶ó°í ÇÕ´Ï´Ù. ÀÌ ¸ðµå¿¡¼´Â, ¸ðµç Äõ¸®¸¦ ½ÇÇàÇϱâ Àü¿¡ µå¶óÀ̹ö°¡ ÀÚµ¿ÀûÀ¸·Î Æ®·£Àè¼Ç(transaction)¸¦ °³½ÃÇØ, ½ÇÇàÀÌ ¿Ï·áÇϸé ÀÚµ¿ÀûÀ¸·Î Æ®·£Àè¼Ç(transaction)¸¦ À§Å¹ÇÕ´Ï´Ù. µðÆúÆ®¿¡¼´Â, ¸ðµç Zend_Db ¾î´ðÅÍ Å¬·¡½º´Â ÀÚµ¿ À§Å¹ ¸ðµå·Î µ¿ÀÛ sh.
ÇÑÆí, Æ®·£Àè¼Ç(transaction)ÀÇ ½ÃÁ¡°ú Á¾Á¡À» ½º½º·Î ÁöÁ¤ÇÏ´Â °ÍÀ¸·Î½á,
º¹¼öÀÇ SQL Äõ¸®¸¦ ÇϳªÀÇ Æ®·£Àè¼Ç(transaction)³»¿¡¼ ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
Æ®·£Àè¼Ç(transaction)¸¦ °³½ÃÇÒ ¶§ beginTransaction()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.±× ÀÌÈÄ¿¡ ½ÇÇàÇß´Ù SQL
¹®ÀåÀº, ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÒ ¶§±îÁö´Â ¸ðµÎ °°Àº Æ®·£Àè¼Ç(transaction)³»¿¡¼ µ¿ÀÛÇÕ´Ï´Ù.
Æ®·£Àè¼Ç(transaction)¸¦ Á¾·áÇÏ·Á¸é ,commit()
ȤÀº rollBack()
ÀÇ ¾î´ÀÂÊÀ̵çÀ» »ç¿ëÇÕ´Ï´Ù.
commit()
¸Þ¼Òµå´Â,
±× Æ®·£Àè¼Ç(transaction)·ÎÀÇ º¯°æ ³»¿ëÀ» À§Å¹ÇÕ´Ï´Ù.
Áï, ±× Æ®·£Àè¼Ç(transaction)·Î °£ º¯°æÀÌ,
´Ù¸¥ Æ®·£Àè¼Ç(transaction)·ÎºÎÅ͵µ º¸À̵µ·Ï(µíÀÌ) ÇÏ´Â °ÍÀÔ´Ï´Ù.
rollBack()
¸Þ¼Òµå´Â ±× ¹Ý´ëÀÇ µ¿ÀÛÀ» ÇÕ´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â, ±× Æ®·£Àè¼Ç(transaction)·ÎÀÇ º¯°æ ³»¿ëÀ» ¸ðµÎ ÆÄ±âÇÕ´Ï´Ù.
º¯°æÀº ÀÏÀý ¾ø¾ú´ø °ÍÀ¸·Î µÇ°í, Æ®·£Àè¼Ç(transaction)¸¦ °³½ÃÇϱâ Àü »óÅ¿¡ µ¥ÀÌÅ͸¦ µÇµ¹¸³´Ï´Ù.
±×·¯³ª, ¾î´À Æ®·£Àè¼Ç(transaction)¸¦ ·Ñ¹é(rollback) Çß´Ù°í ÇØµµ,
±× »çÀÌ¿¡ ´Ù¸¥ Æ®·£Àè¼Ç(transaction)·Î °£ º¯°æ¿¡´Â ¾î¶² ¿µÇâµµ ÁÖÁö ¾Ê½À´Ï´Ù.
Æ®·£Àè¼Ç(transaction)¸¦ Á¾·áÇϸé,Zend_Db_Adapter
(Àº)´Â ´Ù½Ã ÀÚµ¿ À§Å¹ ¸ðµå·Î µ¹¾Æ¿É´Ï´Ù.
¼öµ¿À¸·ÎÀÇ Æ®·£Àè¼Ç(transaction) °ü¸®¸¦ »ç¿ëÇÏ°í ½ÍÀº °æ¿ì´Â,
beginTransaction()
(À»)¸¦ Çѹø ´õ ÄÝ ÇÕ´Ï´Ù.
·Ê 10.29. Àϰü¼ºÀ» º¸°ü À¯ÁöÇϱâ À§ÇÑ Æ®·£Àè¼Ç(transaction) °ü¸®
<?php
// Æ®·£Àè¼Ç(transaction)¸¦ ¸í½ÃÀûÀ¸·Î °³½ÃÇÕ´Ï´Ù
$db->beginTransaction();
try {
// ¸î°³Àΰ¡ Äõ¸®¸¦ ½ÇÇàÇÕ´Ï´Ù
$db->query(...);
$db->query(...);
$db->query(...);
// ¸ðµÎ ¼º°øÇϸé, Æ®·£Àè¼Ç(transaction)¸¦ À§Å¹ÇØ
// ¸ðµç º¯°æÀ» ÇÑ ¹ø¿¡ Àû¿ëÇÕ´Ï´Ù
$db->commit();
} catch (Exception $e) {
// ¸î°³ÀÇ Äõ¸®°¡ ½ÇÆÐÇØ ¿¹¿Ü°¡ ¹ß»ýÇϸé,
// ¸¸¾à ±× ¹Û¿¡ ¼º°øÇϰí ÀÖ´Â Äõ¸®°¡ ÀÖ¾ú´Ù°í ÇØµµ
// ±×°Íµµ Æ÷ÇÔÇØ ¸ðµç 󸮸¦ ·Ñ¹é(rollback) ÇÕ´Ï´Ù.
// ¸ðµÎ Àû¿ëµÇ´ÂÁö, Çϳªµµ Àû¿ëµÇÁö ¾Ê´Â°¡ÀÇ ¸ÓÁö¾Ê¾ÆÀΰ¡ÀÔ´Ï´Ù.
$db->rollBack();
echo $e->getMessage();
}
listTables()
¸Þ¼Òµå´Â ¹®ÀÚ¿ÀÇ ¹è¿À» µ¹·ÁÁÝ´Ï´Ù.
ÀÌ ¹è¿¿¡´Â, µ¥ÀÌŸº£À̽º³»ÀÇ ¸ðµç Å×À̺íÀÇ À̸§ÀÌ °Ý³³µÇ°í ÀÖ½À´Ï´Ù.
describeTable()
¸Þ¼Òµå´Â,
Å×À̺íÀÇ ¸ÞŸµ¥ÀÌŸ¸¦ °Ý³³ÇÑ ¿¬»ó ¹è¿À» µ¹·ÁÁÝ´Ï´Ù.
ÀÌ ¸Þ¼ÒµåÀÇ ÃÖÃÊÀÇ Àμö¿¡, Å×À̺í¸íÀ» ¹®ÀÚ¿·Î ÁöÁ¤ÇÕ´Ï´Ù.
µÎ¹øÂ°ÀÇ Àμö´Â ¿É¼ÇÀ¸·Î, ±× Å×À̺íÀÌ Á¸ÀçÇÏ´Â schemaÀÇ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù.
exists.
¿¬»ó ¹è¿ÀÇ Å°´Â, Å×À̺íÀÇ Ä÷³ÀÇ À̸§ÀÌ µÇ¾î m. °¢ Ű¿¡ °ü·ÃÁöÀ» ¼ö ÀÖ¾ú´ø °ªµµ ¿¬»ó ¹è¿·Î, ÀÌÇÏÀÇ Å°°¡ Á¸ÀçÇÕ´Ï´Ù.
Ç¥ 10.1. describeTable() ÇÏÁö¸¸ µ¹·ÁÁÖ´Â ¿¬»ó ¹è¿ÀÇ Çʵå
Ű | Çü | ¼³¸í |
---|---|---|
SCHEMA_NAME | (string) | ÀÌ Å×À̺íÀÌ ¼ÓÇÏ´Â µ¥ÀÌŸº£À̽º schemaÀÇ À̸§. |
TABLE_NAME | (string) | ÀÌ Ä÷³ÀÌ ¼ÓÇÏ´Â Å×À̺íÀÇ À̸§. |
COLUMN_NAME | (string) | Ä÷³¸í. |
COLUMN_POSITION | (integer) | Å×ÀÌºí³»¿¡¼ÀÇ ±× Ä÷³ÀÇ À§Ä¡. |
DATA_TYPE | (string) | RDBMS ±×¸®°í Á¤Àǵǰí ÀÖ´Â, ±× Ä÷³ÀÇ µ¥ÀÌÅÍÇü. |
DEFAULT | (string) | ¸¸¾à Á¸ÀçÇϸé, ±× Ä÷³ÀÇ µðÆúƮġ. |
NULLABLE | (boolean) | ±× Ä÷³ÀÌ SQL ÀÇ NULL (À»)¸¦ Çã°¡Çϰí ÀÖ´Â °æ¿ì´Â true,NOT NULL Á¦¾àÀÌ ÁöÁ¤µÇ¾î ÀÖ´Â °æ¿ì´Â false. |
LENGTH | (integer) | RDBMS ±×¸®°í Á¤Àǵǰí ÀÖ´Â, ±× Ä÷³ÀÇ ±æÀÌ (»çÀÌÁî). |
SCALE | (integer) | SQL ÀÇ NUMERIC ÇüÅ ȤÀº DECIMAL ÇüÅ·ÎÀÇ ÀÚ¸®¼ö. |
PRECISION | (integer) | SQL ÀÇ NUMERIC ÇüÅ ȤÀº DECIMAL ÇüÅ·ÎÀÇ Á¤µµ. |
UNSIGNED | (boolean) | Á¤¼ö°èÀÇ ÇüÅ·Î, ºÎÈ£ ¾øÀ½ (UNSIGNED) ÀÎ °æ¿ì¿¡ true. |
PRIMARY | (boolean) | ±× Ä÷³ÀÌ ÁÖŰÀÇ ÀϺÎÀÎ °æ¿ì¿¡ true. |
PRIMARY_POSITION | (integer) | ÁÖŰ Ä÷³ Áß(¾È)¿¡¼ÀÇ ¼ø¼ (óÀ½Àº 1). |
IDENTITY | (boolean) | ±× Ä÷³ÀÌ ÀÚµ¿ »ý¼ºÀÇ °ªÀ» »ç¿ëÇϰí ÀÖ´Â °æ¿ì¿¡ true. |
ÁöÁ¤ÇÑ Å×À̺í¸í°ú schema¸í¿¡ ´ëÀÀÇÏ´Â Å×À̺íÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â,
describeTable()
(Àº)´Â ÇÏ´ÃÀÇ ¹è¿À» µ¹·ÁÁÝ´Ï´Ù.
Åë»óÀº, µ¥ÀÌŸº£À̽º¿ÍÀÇ Á¢¼ÓÀ» ´ÝÀ» ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¸®Äù½ºÆ®ÀÇ Ã³¸®°¡ Á¾·áÇÑ ½ÃÁ¡¿¡¼,PHP ÇÏÁö¸¸ ÀÚµ¿ÀûÀ¸·Î ÀÚ¿øÀÇ µÚ󸮸¦ ½Ç½ÃÇϱ⠶§¹®ÀÔ´Ï´Ù. µ¥ÀÌŸº£À̽º °ü·ÃÀÇ È®Àå ¸ðµâÀº, ÀÚ¿ø ¿ÀºêÁ§Æ®¿¡ÀÇ ÂüÁ¶°¡ ¾ø¾îÁø ½ÃÁ¡¿¡¼ Á¢¼ÓÀ» ´Ýµµ·Ï(µíÀÌ) ¼³°èµÇ°í ÀÖ½À´Ï´Ù.
±×·¯³ª, ½ÇÇà ½Ã°£ÀÌ ±æ°Ô °É·Á,
¸¹Àº µ¥ÀÌŸº£À̽º Á¢¼ÓÀ» Ãë±ÞÇÏ´Â PHP
½ºÅ©¸³Æ®ÀÇ °æ¿ì´Â, ½º½º·Î Á¢¼ÓÀ» ´ÝÀ» Çʿ䰡 ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù.
À̰Ϳ¡ ÀÇÇØ,RDBMS ¼¹ö°¡ ÇѰ迡 À̸£·¯ ¹ö¸®´Â °ÍÀ» ¸·½À´Ï´Ù.
µ¥ÀÌŸº£À̽º Á¢¼ÓÀ» ¸í½ÃÀûÀ¸·Î ´ÝÀ¸·Á¸é , ¾î´ðÅÍÀÇ
closeConnection()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
![]() |
Zend_Db (Àº)´Â Áö¼ÓÀûÀÎ Á¢¼ÓÀ» ¼Æ÷Æ®Çϰí ÀÖ½À´Ï±î? |
---|---|
Zend_Db ±×·³, Áö¼ÓÀûÀÎ Á¢¼ÓÀÇ »ç¿ëÀº ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù. Áö¼ÓÀûÀÎ Á¢¼ÓÀ» »ç¿ëÇϸé,RDBMS ¼¹ö¿¡ ºÒÇÊ¿äÇÑ Á¢¼ÓÀÌ ½×¿© ¹ö¸³´Ï´Ù. Á¢¼Ó ÀÛ¼º½ÃÀÇ ¿À¹öÇìµå°¡ ÁÙ¾î µå´Â °Í¿¡ ÀÇÇÑ ÆÛÆ÷¸Õ½ºÀÇ Çâ»óº¸´Ù, °Å±â¿¡ µû¶ó ÀÏÀ¸ÄÑÁö´Â ¹®Á¦ ÂÊÀÌ ¸¹¾ÆÁú ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌŸº£À̽º Á¢¼ÓÀº, ±× »óŸ¦ °ü¸®Çϰí ÀÖ½À´Ï´Ù. Áï,RDBMS ¼¹öÀÇ ¿ÀºêÁ§Æ®¾È¿¡´Â ¼¼¼Ç ½ºÄÚÇÁ·Î Á¸ÀçÇÏ´Â °ÍÀÌ ÀÖ´Â °ÍÀÔ´Ï´Ù. ¼¼¼Ç ½ºÄÚÇÁ·Î °ü¸®µÇ´Â Á¤º¸ÀÇ ¿¹·Î¼´Â, ¶ôÀ̳ª À¯Àú º¯¼ö, ÀϽà Å×À̺í, ¹Ù·Î ¿·¿¡ ½ÇÇàÇÑ Äõ¸®ÀÇ Á¤º¸ (º¯°æµÈ Çà¼ö, ÀÚµ¿ »ý¼ºµÇ¾ú´Ù ID) µîÀ» µé ¼ö ÀÖ½À´Ï´Ù. Áö¼ÓÀûÀÎ Á¢¼ÓÀ» »ç¿ëÇϸé, ´Ù¸¥ PHP ¸®Äù½ºÆ®°¡ ÀÛ¼ºÇÑ µ¥ÀÌÅÍ¿¡ À߸øÇØ ¾×¼¼½º ÇØ ¹ö¸®´Â À§ÇèÀÌ »ý°Ü ¹ö¸³´Ï´Ù. |
PHP ÀÇ µ¥ÀÌŸº£À̽º °ü·Ã È®Àå ¸ðµâÀÌ Á¦°øÇÏ´Â Á¢¼Ó ¿ÀºêÁ§Æ®¸¦, Á÷Á¢ Á¶ÀÛÇÏ°í ½Í¾îÁö´Â ÀÏÀÌ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. Zend_Db_Adapter_Abstract ÇÏÁö¸¸ ´ëÀÀÇϰí ÀÖÁö ¾Ê´Â µíÇÑ ±× µ¥ÀÌŸº£À̽º °íÀ¯ÀÇ ±â´ÉÀ» »ç¿ëÇÏ°í ½ÍÀº °æ¿ì µîÀÔ´Ï´Ù.
Zend_Db ±×¸®°í SQL ¹®ÀåÀ» ½ÇÇàÇÏ´Â °æ¿ì´Â, Ç×»ó ÇÁ¸®Æä¾Æ/½ÇÇàÀÇ 2´Ü°è·Î ³ª´©¾î 󸮵˴ϴÙ. ±×·¯³ª, µ¥ÀÌŸº£À̽ºÀÇ ±â´É¾È¿¡´Â ÇÁ¸®Æä¾Æµå½ºÅ×ÀÌÆ®¸ÕÆ®¿¡ ´ëÀÀÇϰí ÀÖÁö ¾Ê´Â µíÇÑ °Íµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î,CREATE (ÀÌ)³ª ALTER (¿Í)°ú °°Àº DDL (Àº)´Â, MySQL ±×·³ ÇÁ¸®Æä¾Æµå½ºÅ×ÀÌÆ®¸ÕÆ®·Î ÇÒ ¼ö ¾ø½À´Ï´Ù. ¶Ç,MySQL 5.1.17 º¸´Ù ÀüÀÇ ¹öÁ¯¿¡¼´Â MySQL Äõ¸® ij½¬ ÀÇ ±â´ÉÀ» Ȱ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
´ëºÎºÐÀÇ È®Àå ¸ðµâ¿¡´Â,
ÇÁ¸®Æä¾Æµå½ºÅ×ÀÌÆ®¸ÕÆ®´Â ¾Æ´Ï°í Á÷Á¢ SQL
(À»)¸¦ ½ÇÇàÇϱâ À§ÇÑ ¸Þ¼Òµå°¡ ÁغñµÇ¾î ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î PDO (ÀÌ)¶ó¸é exec()
ÇÏÁö¸¸ °Å±â¿¡ ¸ÂÀ¾´Ï´Ù.
Á¢¼Ó ¿ÀºêÁ§Æ®¿¡ Á÷Á¢ ¾×¼¼½º ÇÏ·Á¸é ,getConnection()
(À»)¸¦ »ç¿ëÇÕ´Ï´Ù.
·Ê 10.31. PDO ¾î´ðÅÍ¿¡ ÀÇÇÑ, ÇÁ¸®Æä¾Æµå Çü½ÄÀÌ ¾Æ´Ñ Äõ¸®ÀÇ ½ÇÇà
<?php
$result = $db->getConnection()->exec('DROP TABLE bugs');
ÀÌ¿Í °°ÀÌ Çϰí, È®Àå ¸ðµâÀÌ Á¦°øÇÏ´Â ±× ¿ÜÀÇ ¸Þ¼Òµå³ª ÇÁ·ÓÆÛƼ¿¡µµ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù.´ÜÁö, ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ÀÏÀ» Çϸé, ´ç½ÅÀÇ ÀÛ¼ºÇÑ ¾îÇø®ÄÉÀ̼ÇÀÌ Æ¯Á¤ÀÇ RDBMS ¿ë¹«ÀÇ È®Àå ¸ðµâ¿¡ ÀÇÁ¸ÇØ ¹ö¸®°Ô µË´Ï´Ù.
Àå·¡ÀÇ ¹öÁ¯ÀÇ Zend_Db ±×·³, µ¥ÀÌŸº£À̽ºÀÇ È®Àå ¸ðµâÀÌ ¼Æ÷Æ®ÇÏ´Â ±â´É¿¡ÀÇ ¸Þ¼Òµå ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÒ ¿¹Á¤ÀÔ´Ï´Ù. À̰ÍÀº, °ú°ÅÀÇ ¹öÁ¯°úÀÇ È£È¯¼ºÀ» ÇØÄ¥ °ÍÀº ¾ø½À´Ï´Ù.
¿©±â¿¡¼´Â, »ç¿ëÇÏ´Â ¾î´ðÅÍ ¸¶´Ù ÁÖÀÇÇØ¾ß ÇÒ Á¡À» Á¤¸®ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory() ±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â, À̸§À» 'Db2' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ ibm_db2 È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
IBM DB2 (Àº)´Â, ¼ø¼µµ ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°µµ
¾çÂÊ ¸ðµÎ ¼Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.
µû¶ó¼,lastInsertId()
¿¡ÀÇ Àμö´Â ÁöÁ¤Çصµ ÇÏÁö ¾Ê¾Æµµ ±¦Âú½À´Ï´Ù.Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â,
ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°°¡ ¸¶Áö¸·¿¡ »ý¼ºÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
Àμö¸¦ ÁöÁ¤ÇßÀ» °æ¿ì´Â,
'Å×À̺í¸í_Ä÷³¸í_seq'
(ÀÌ)¶ó´Â À̸§ÀÇ ¼ø¼°¡ ¸¶Áö¸·¿¡ »ý¼ºÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Mysqli' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ mysqli È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
MySQL (Àº)´Â ¼ø¼¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.µû¶ó¼,
lastInsertId()
¿¡ Àμö¸¦ ÁöÁ¤Çصµ ±×°ÍÀº ¹«½ÃµË´Ï´Ù.
µ¹¾Æ°¡ °ªÀº, Ç×»ó ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°ÀÇ ¸¶Áö¸· °ªÀÌ µË´Ï´Ù.
lastSequenceId()
¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº
null
µË´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Oracle' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ oci8 È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
Oracle (Àº)´Â ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.
µû¶ó¼,lastInsertId()
(ÀÌ)³ª
lastSequenceId()
¿¡´Â ¼ø¼¸íÀ» ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
Oracle È®Àå ¸ðµâÀº À§Ä¡ ÁöÁ¤¿¡ ÀÇÇÑ ÆÄ¶ó¹ÌÅ͸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù. À̸§ ´ÙÇØ ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÇöÀç,Oracle ¾î´ðÅÍ¿¡¼´Â Zend_Db::CASE_FOLDING
¿É¼ÇÀ» ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.Oracle
±×¸®°í ÀÌ ±â´ÉÀ» »ç¿ëÇÏ°í ½ÍÀº °æ¿ì´Â,PDO OCI
¾î´ðÅ͸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Pdo_Ibm' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ pdo ¹× pdo_ibm È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
PDO_IBM È®Àå ¸ðµâÀÇ ¹öÁ¯ 1.2.2 ÀÌÈİ¡ ÇÊ¿äÇÕ´Ï´Ù. À̰ͺ¸´Ù ³°Àº ¹öÁ¯À» »ç¿ëÇϰí ÀÖ´Â °æ¿ì´Â,PDO_IBM È®Àå ¸ðµâÀ» PECL ±×¸®°í °»½ÅÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Pdo_Mssql' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ pdo ¹× pdo_mssql È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
Microsoft SQL Server (Àº)´Â ¼ø¼¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.
µû¶ó¼,
lastInsertId()
¿¡ Àμö¸¦ ÁöÁ¤Çصµ ±×°ÍÀº ¹«½ÃµË´Ï´Ù.
µ¹¾Æ°¡ °ªÀº, Ç×»ó ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°ÀÇ ¸¶Áö¸· °ªÀÌ µË´Ï´Ù.
lastSequenceId()
¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº
null
µË´Ï´Ù.
Zend_Db_Adapter_Pdo_Mssql (Àº)´Â,SQL Server
¿¡ Á¢¼ÓÇÑ Á÷ÈÄ¿¡ QUOTED_IDENTIFIER ON
(À»)¸¦ ¼³Á¤ÇÕ´Ï´Ù.À̰Ϳ¡ ÀÇÇØ,SQL ÀÇ ½Äº°ÀÚ¸¦ ÄíÆ® ÇÒ ¶§¿¡
Ç¥ÁØÀÇ ´Ü¶ô ¹®ÀÚ ("
) (À»)¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù.
SQL Server ÀÇ µ¶ÀÚ »ç¾çÀÎ ²©¼â¹À½¿¡ ÀÇÇÑ ÄíÆ®´Â »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
¿É¼ÇÀÇ ¹è¿·Î, Ű·Î¼ pdoType
(À»)¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.ÀÌ °ªÀº "mssql" (µðÆúÆ®),
"dblib","freetds" ȤÀº "sybase" ÀÇ ¾ðÁ¨°¡µË´Ï´Ù.
ÀÌ ¿É¼ÇÀº,DSN ¹®ÀÚ¿À» ÀÛ¼ºÇÒ ¶§¿¡ »ç¿ëÇÑ´Ù
DSN ÇÁ·¹ÇȽº¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù."freetds" ¹×
"sybase" (À»)¸¦ ÁöÁ¤ÇßÀ» °æ¿ìÀÇ ÇÁ·¹ÇȽº´Â
"sybase:" µË´Ï´Ù.À̰ÍÀº
FreeTDS
°èÀÇ ¶óÀ̺귯¸®¿¡¼ ÀÌ¿ëµÇ´Â °ÍÀÔ´Ï´Ù.
ÀÌ µå¶óÀ̹ö·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù DSN ÇÁ·¹ÇȽºÀÇ ÀÚ¼¼ÇÑ °ÍÀº
http://www.php.net/manual/ja/ref.pdo-dblib.connection.php
(À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Pdo_Mysql' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ pdo ¹× pdo_mysql È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
MySQL (Àº)´Â ¼ø¼¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.µû¶ó¼,
lastInsertId()
¿¡ Àμö¸¦ ÁöÁ¤Çصµ ±×°ÍÀº ¹«½ÃµË´Ï´Ù.
µ¹¾Æ°¡ °ªÀº, Ç×»ó ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°ÀÇ ¸¶Áö¸· °ªÀÌ µË´Ï´Ù.
lastSequenceId()
¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº
null
µË´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Pdo_Oci' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ pdo ¹× pdo_oci È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
Oracle (Àº)´Â ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.
µû¶ó¼,lastInsertId()
(ÀÌ)³ª
lastSequenceId()
¿¡´Â ¼ø¼¸íÀ» ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Pdo_Pgsql' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ pdo ¹× pdo_pgsql È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
PostgreSQL (Àº)´Â, ¼ø¼µµ ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°µµ
¾çÂÊ ¸ðµÎ ¼Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù.
µû¶ó¼,lastInsertId()
¿¡ÀÇ Àμö´Â ÁöÁ¤Çصµ ÇÏÁö ¾Ê¾Æµµ ±¦Âú½À´Ï´Ù.Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â,
ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°°¡ ¸¶Áö¸·¿¡ »ý¼ºÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
Àμö¸¦ ÁöÁ¤ÇßÀ» °æ¿ì´Â,
'Å×À̺í¸í_Ä÷³¸í_seq'
(ÀÌ)¶ó´Â À̸§ÀÇ ¼ø¼°¡ ¸¶Áö¸·¿¡ »ý¼ºÇÑ °ªÀ» µ¹·ÁÁÝ´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Pdo_Sqlite' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ pdo ¹× pdo_sqlite È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
SQLite (Àº)´Â ¼ø¼¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.µû¶ó¼,
lastInsertId()
¿¡ Àμö¸¦ ÁöÁ¤Çصµ ±×°ÍÀº ¹«½ÃµË´Ï´Ù.
µ¹¾Æ°¡ °ªÀº, Ç×»ó ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°ÀÇ ¸¶Áö¸· °ªÀÌ µË´Ï´Ù.
lastSequenceId()
¸Þ¼ÒµåÀÇ µ¹¾Æ°¡ °ªÀº
null
µË´Ï´Ù.
SQLite2 µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÏ·Á¸é ,
Pdo_Sqlite ¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¶§¿¡
ÆÄ¶ó¹ÌÅÍÀÇ ¹è¿·Î
'dsnprefix'=>'sqlite2'
(À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
¸Þ¸ð¸®»óÀÇ SQLite µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÏ·Á¸é ,
Pdo_Sqlite ¾î´ðÅÍÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¶§¿¡
ÆÄ¶ó¹ÌÅÍÀÇ ¹è¿·Î
'dbname'=>':memory:'
(À»)¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
PHP ¿ë¹«ÀÇ SQLite µå¶óÀ̹öÀÇ ³°Àº ¹öÁ¯¿¡¼´Â, °á°ú ¼¼Æ®·Î ªÀº Ä÷³¸íÀ» »ç¿ëÇϱâ À§ÇÑ PRAGMA Ä¿¸àµå°¡ ¼Æ÷Æ®µÇ¾î ÀÖÁö ¾ÊÀº °Í °°½À´Ï´Ù. join Äõ¸®¸¦ ½ÇÇàÇßÀ» ¶§ÀÇ °á°ú ¼¼Æ®ÀÇ Ä÷³¸íÀÌ "Å×À̺í¸í.Ä÷³¸í" Çü½ÄÀÌ µÇ´Â °æ¿ì´Â, PHP ÀÇ ¹öÁ¯À» ¾÷±×·¹À̵å ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ ¾î´ðÅ͸¦ factory()
±×¸®°í ÁöÁ¤ÇÏ´Â °æ¿ì´Â,
À̸§À» 'Firebird' (À¸)·Î ÇÕ´Ï´Ù.
ÀÌ ¾î´ðÅÍ´Â,PHP ÀÇ php_interbase È®Àå ¸ðµâÀ» »ç¿ëÇÕ´Ï´Ù.
Firebird/interbase (Àº)´Â ÀÚµ¿ ÀÎÅ©¸®¸ÕÆ®(increment)ÀÇ Å°¸¦ ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.
¼ø¼ÀÇ À̸§À»
lastInsertId()
ȤÀº
lastSequenceId()
(À¸)·Î ÁöÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÇöÀç,Firebird/interbase ¾î´ðÅÍ¿¡¼´Â Zend_Db::CASE_FOLDING
¿É¼ÇÀ» ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù.
ÄíÆ® Çϰí ÀÖÁö ¾Ê´Â ½Äº°ÀÚ´Â, ÀÚµ¿ÀûÀ¸·Î ´ë¹®ÀÚ·Î µ¹·ÁÁÖ¾îÁý´Ï´Ù.