V4.04 13 Nov 2003 (c) 2000-2003 John Lim (jlim#natsoft.com)
º¯¿ª: Jae-Geun Kim/DoA (artech@qaos.com)
ÀÌ ¼ÒÇÁÆ®¿þ¾î´Â BSD Çü½Ä°ú LGPL Çü½ÄÀÇ µÎ°¡Áö ¶óÀ̼¾½º¸¦ »ç¿ëÇÑ´Ù. ÀÌ °ÍÀº ÀÌ ¼ÒÇÁÆ®¿þ¾î¸¦ ÄÄÆÄÀÏÇØ¼ »ó¾÷ÀûÀÎ Á¦Ç°¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
À¯¿ëÇÑ ADOdb ¸µÅ©: ´Ù¿î·Îµå ´Ù¸¥ ¹®¼
¼Ò°³
Ư¡
ADOdb¸¦ »ç¿ëÇÏ´Â »çÀÌÆ®
¼öÁ¤ ¹× ¹ö±× º¸°í
¼³Ä¡
ÃÖ¼Ò ¼³Ä¡
ÄÚµå ÃʱâÈ¿Í Á¢¼Ó ¿¹
°í¼Ó ADOdb
¾ÈÀüÇÏ°Ô ADOdb º¯°æÇϱâ
ADONewConnection
NewADOConnection
PHP5 Ư¡
foreach
·çÇÁ ¿¹¿Üó¸®
Áö¿øµÇ´Â DB
±æÀâÀÌ
¿¹ 1: Select
¿¹ 2: °í±Þ Select
¿¹ 3: Insert
¿¹ 4: µð¹ö±ë rs2html
¿¹
¿¹ 5: MySQL°ú ¸Þ´º
¿¹ 6: ¿©·¯ DB¿¡ µ¿½Ã Á¢¼ÓÇϱâ
¿¹ 7: Update, Insert SQL »ý¼ºÇϱâ
¿¹ 8: ÀÌÀü, ÀÌÈÄ ÆäÀÌÁö·Î À̵¿Çϱâ
¿¹ 9: CSV ¶Ç´Â ÅǺи® Çü½ÄÀ¸·Î ³»º¸³»±â
¿¹ 10: »ç¿ëÀÚ ÇÊÅÍ
¿¹ 11: Áö´ÉÀû Æ®·£Àè¼Ç
»ç¿ëÀÚ ¿À·ù ó¸®¿Í PEAR_Error »ç¿ëÇϱâ
µ¥ÀÌŸ ¼Ò½º¸í(DSN)
ij½³
ÇÇÆá Å×À̺í
º¯¼ö: $ADODB_COUNTRECS $ADODB_ANSI_PADDING_OFF
$ADODB_CACHE_DIR $ADODB_FETCH_MODE
$ADODB_LANG
»ó¼ö: ADODB_ASSOC_CASE
ADOConnection
¿¬°á: Connect PConnect
NConnect
SQL ½ÇÇà: Execute CacheExecute
SelectLimit CacheSelectLimit
Param Prepare PrepareSP
Parameter
GetOne
CacheGetOne GetRow CacheGetRow
GetAll CacheGetAll GetCol
CacheGetCol GetAssoc CacheGetAssoc Replace
ExecuteCursor
(oci8 ¸¸)
SQL ¹®Àå »ý¼º: GetUpdateSQL GetInsertSQL
Concat IfNull substr random qstr Param
OffsetDate SQLDate
DBDate DBTimeStamp
ºê·Ó(Blobs): UpdateBlob UpdateClob
UpdateBlobFile BlobEncode
BlobDecode
ÆäÀÌÁö À̵¿: PageExecute CachePageExecute
Áö¿ì±â: CacheFlush Close
Æ®·¢Àè¼Ç: StartTrans CompleteTrans
FailTrans HasFailedTrans
BeginTrans CommitTrans
RollbackTrans
µ¥ÀÌŸ °¡Á®¿À±â: SetFetchMode
¹®ÀÚ¿ ó¸®: concat qstr quote substr
³¯Â¥: DBDate DBTimeStamp UnixDate
UnixTimeStamp OffsetDate
SQLDate
Çà°ü¸®: Affected_Rows Insert_ID RowLock
GenID CreateSequence DropSequence
¿À·ù ó¸®: ErrorMsg ErrorNo
MetaError MetaErrorMsg
µ¥ÀÌŸ »çÀü(¸ÞŸµ¥ÀÌŸ): MetaDatabases MetaTables
MetaColumns MetaColumnNames
MetaPrimaryKeys MetaForeignKeys
ServerInfo
Åë°è ¹× Äõ¸® Àç»ý¼º: LogSQL fnExecute
and fnCacheExecute
Deprecated: Bind BlankRecordSet
ADORecordSet
ÇÑ ÇÊµå ¸®ÅÏ: Fields
ÇÑ Çà ¸®ÅÏ:FetchRow FetchInto
FetchObject FetchNextObject
FetchObj FetchNextObj
GetRowAssoc
¸ðµç Çà ¸®ÅÏ:GetArray GetRows
GetAssoc
À̵¿:Move MoveNext MoveFirst
MoveLast AbsolutePosition CurrentRow
AtFirstPage AtLastPage
AbsolutePage
¸Þ´º »ý¼º:GetMenu GetMenu2
³¯Â¥:UserDate UserTimeStamp
UnixDate UnixTimeStamp
·¹ÄÚµå¼Â Á¤º¸:RecordCount PO_RecordSet
NextRecordSet
Çʵå Á¤º¸:FieldCount FetchField
MetaType
»èÁ¦: Close
rs2html ¿¹
ADOdb¿Í ADOÀÇ Â÷ÀÌ
DB µå¶óÀ̹ö ±æÀâÀÌ
º¯°æ»çÇ×
PHP´Â Ç¥ÁØÈµÈ DB Á¢±ÙÇÔ¼ö¸¦ °¡Áö°íÀÖÁö¾Ê´Ù. ADOdb´Â ¼·Î ´Ù¸¥ DB API »çÀÌÆ® Â÷À̸¦ ¼û±æ ¼ö ÀÖ´Â DB Å©·¡½º(Â÷ÀÌÁ¡Àº ĸ½¶ÈµÈ´Ù), µû¶ó¼ µ¥ÀÌŸº£À̽º¸¦ ½±°Ô ¹Ù²Ü ¼ö ÀÖ´Â DB Å©·¡½º¿¡´ëÇÑ Çʿ伺¶§¹®¿¡ ¸¸µé¾îÁ³´Ù. ADOdb´Â PHP 4.0.5 ÀÌ»óÀÇ ¹öÀüÀ» ÇÊ¿ä·Î ÇÑ´Ù(¹è¿À» ó¸®ÇÒ ¼ö ÀÖ´Â str_replace¸¦ »ç¿ëÇϱ⶧¹®ÀÌ´Ù).
MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase(Firebird¿Í Borland º¯Á¾), Foxpro, Access, ADO, DB2, SAP DB¿Í ODBC¸¦ Áö¿øÇÑ´Ù. ¶ÇÇÑ ODBC¸¦ ÅëÇØ Progress¿Í CacheLite¿¡ ¼º°øÀûÀ¸·Î Á¢¼ÓÇß´Ù´Â º¸°í¸¦ ¹Þ¾Ò´Ù. ¿ì¸®´Â º¸´Ù ¸¹Àº »ç¶÷µéÀÌ ¿©·¯ µ¥ÀÌŸº£À̽º¸¦ Áö¿øÇÏ´Â µå¶óÀ̹ö °³¹ß¿¡ ±â¿©Çϱâ¹Ù¶õ´Ù.
PHP4´Â ¼¼¼Ç º¯¼ö¸¦ Áö¿øÇÑ´Ù. ȣȯ¼º°ú È®À强À» À§ÇØ ¼¼¼Ç Á¤º¸¸¦ ADOdb¸¦ »ç¿ëÇØ¼ ÀúÀåÇÒ ¼ö ÀÖ´Ù. º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸´Â adodb-session.php¸¦ º¸±â¹Ù¶õ´Ù.
´Ù¸¥ DB¿Í ȣȯµÇ´Â SQL ¾²±âÀ§ÇÑ ÆÁÀº http://php.weblogs.com/portable_sql(¶ÇÇÑ ÀÌ ¹èÆ÷º»ÀÇ tips_portable_sql.htm¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù)À» º¸±â¹Ù¶õ´Ù.
¼öÁ¤ ¹× ¹ö±× º¸°í´Â jlim#natsoft.com.my·Î ÀüÀÚ¿ìÆíÀ» º¸³»°Å³ª ADOdb Æ÷·³(http://phplens.com/lens/lensforum/topics.php?id=4)¿¡ ¿Ã¸®±â ¹Ù¶õ´Ù.
PHP 4.0.4 ÀÌ»óÀÇ ¹öÀüÀ» »ç¿ëÇÏ´ÂÁö È®½ÇÈ÷Çϱ⠹ٶõ´Ù. À¥¼¹ö°¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â µð·ºÅ丮¿¡ ¸ðµç ÆÄÀÏÀ» ¾ÐÃàÇØÁ¦ÇÑ´Ù.
Á¤»óÀûÀÎ ¼³Ä¡¿©ºÎ¸¦ °Ë»çÇϱâÀ§ÇØ ±æÀâÀÌÀÇ ¿¹¸¦ º¯°æÇÑ´Ù. Á¢¼Ó ¼³Á¤ÀÌ ¿Ã¹Ù¸¥Áö È®½ÇÈ÷ ÇÑ´Ù. ´ÙÀ½ ¿¹¿¡ º¸¿©Áø °Íó·³ $db->debug = true¸¦ ¼³Á¤ÇÔÀ¸·Î¼ µð¹ö±×ÇÒ ¼ö ÀÖ´Ù:
<?php
include('adodb/adodb.inc.php');
$db = ADONewConnection($dbdriver); # ¿¹ 'mysql' ¶Ç´Â 'postgres'
$db->debug = true;
$db->Connect($server, $user, $password, $database);
$rs = $db->Execute('select * from some_small_table');
print "<pre>";
print_r($rs->GetRows());
print "</pre>";
?>
ADOdb¸¦ ÇÊ¿äÇÑ ÆÄÀϸ¸ ¼³Ä¡ÇÏ·Á´Â °³¹ßÀÚÀÇ °æ¿ì ´ÙÀ½ ÆÄÀϸ¸ ¼³Ä¡ÇϸéµÈ´Ù:
ADOdb¸¦ ±âµ¿ÇÒ ¶§ Àû¾îµµ µÎ°³ÀÇ ÆÄÀÏÀÌ ¸ÕÀú ÀÐÇôÁ®¾ß ÇÑ´Ù. ù¹øÂ°´Â adodb/adodb.inc.php·Î¼ ¸ðµç DB Å©·¡½º¿¡ÀÇÇØ »ç¿ëµÇ´Â ÇÔ¼ö°¡ Æ÷ÇԵǾî ÀÖ´Ù. ƯÁ¤ DB¿¡´ëÇØ Á¤ÀÇµÈ ÄÚµå´Â adodb/driver/adodb-????.inc.php ÆÄÀÏ¿¡ Æ÷ÇԵǾî ÀÖ´Ù.
¿¹¸¦µé¾î, mysql µ¥ÀÌŸº£¿¡½º¿¡ Á¢¼ÓÇÏ·Á¸é ´ÙÀ½°ú °°Àº Äڵ带 »ç¿ëÇÑ´Ù:
include('/path/to/set/here/adodb.inc.php');
$conn = &ADONewConnection('mysql');
DB Á¢¼ÓÀÌ ÇÊ¿äÇÑ °æ¿ì Ç×»ó ADONewConnection($driver) ÇÔ¼ö¸¦ »ç¿ëÇØ¼ Á¢¼Ó °³Ã¼¸¦ »ý¼ºÇÑ´Ù. NewADOConnection($driver)´Â º°¸íÀÌ´Ù.
ÀÌ ½ÃÁ¡¿¡¼ DB¿¡ Á¢¼ÓµÇ´Â °ÍÀº ¾Æ´Ï´Ù. Á¢¼ÓÇϱâÀü¿¡ ¿µ±¸ Á¢¼ÓÀ» ÇÒ °ÍÀÎÁö ÀϽà Á¢¼ÓÀ» ÇÒ °ÍÀÎÁö °áÁ¤ÇؾßÇÑ´Ù. ¿µ±¸ Á¢¼ÓÀÇ ÀÕÁ¡Àº DB Á¢¼ÓÀÌ ²÷¾îÁöÁö¾ÊÀ¸¹Ç·Î ºü¸£´Ù´Â °ÍÀÌ´Ù(½ÉÁö¾î Close()¸¦ È£ÃâÇØµµ). ÀϽà Á¢¼ÓÀº ÈξÀ ÀûÀº ½Ã½ºÅÛ ÀÚ¿øÀ» ÀÚÄ¡ÇϹǷΠDB ¼¹ö³ª À¥ ¼¹ö¿¡ °úºÎÇϰ¡ °É¸± À§Ç輺À» ÁÙÀÏ ¼ö ÀÖ´Ù.
¿µ±¸ Á¢¼ÓÀÇ °æ¿ì, $conn->PConnect()¸¦ »ç¿ëÇϸç, ÀϽà Á¢¼ÓÀÇ °æ¿ì $conn->Connect()¸¦ »ç¿ëÇÑ´Ù. ¸î¸î DB µå¶óÀ̹ö´Â NConnect()¸¦ Áö¿øÇÑ´Ù. NConnect()´Â °Á¦·Î »õ·Î¿î Á¢¼ÓÀ» »ý¼ºÇÑ´Ù.
Á¢¼Ó½Ã ÁÖÀÇ»çÇ×: µÎ°³ÀÇ Á¢¼ÓÀ» »ý¼ºÇÏ¸é¼ µ¿ÀÏÇÑ »ç¿ëÀÚ ID¿Í PW¸¦ »ç¿ëÇϸé PHP´Â Á¢¼ÓÀ» °øÀ¯ÇϰԵȴÙ. ÀÌ °æ¿ì »õ·Î »ý¼ºµÈ Á¢¼ÓÀÌ ´Ù¸¥ DB¿¡ Á¢¼ÓÇÏ´Â °ÍÀ̶ó¸é ¹®Á¦¸¦ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â ¹æ¹ýÀº ¼·Î ´Ù¸¥ µ¥ÀÌŸº£À̽º¿¡ ¿¬°áÇÏ´Â °æ¿ì Ç×»ó ´Ù¸¥ »ç¿ëÀÚ ID¸¦ »ç¿ëÇϰųª NConnect()¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù.
MySQL Á¢¼ÓÀº ¾ÆÁÖ Á÷°üÀûÀÌ´Ù. ¸ðµç ¸Å°³º¯¼ö´Â mysql_connect¿Í µ¿ÀÏÇÏ´Ù:
$conn = &ADONewConnection('mysql');
$conn->PConnect('localhost','userid','password','database');
´ëºÎºÐÀÇ ´Ù¸¥ DB µå¶óÀ̹öµµ ºñ½ÁÇÑ ±ÔÄ¢À» »ç¿ëÇÑ´Ù:
Connect($server, $user, $password, $database)
¿¹¿Ü´Â ´ÙÀ½¿¡ ¿°ÅµÇ¾ú´Ù.
PostgreSQL¿¡¼ Çã¿ëµÇ´Â ¿¬°á:
a. Ç¥ÁØ Á¢¼Ó ¹®ÀÚ¿:
$conn = &ADONewConnection('postgres7');
$conn->PConnect('host=localhost port=5432 dbname=mary');
b. ÀüÅëÀûÀÎ 4°³ÀÇ ¸Å°³º¯¼ö »ç¿ë:
$conn->PConnect('localhost','userid','password','database');
$conn = &ADONewConnection('ibase');
$conn->PConnect('localhost:c:\ibase\employee.gdb','sysdba','masterkey');
OracleÀÇ °æ¿ì ¿©·¯°¡Áö ¹æ¹ýÀ¸·Î ¿¬°áÇÒ ¼ö ÀÖ´Ù.
a. PHP¿Í OracleÀÌ µ¿ÀÏÇÑ ÄÄÇ»ÅÍ¿¡ ¼³Ä¡µÈ °æ¿ì, ±âº» SID »ç¿ë.
$conn->Connect(false, 'scott', 'tiger');
b. TNS ¸íÀÌ Á¤ÀÇµÈ °æ¿ì, ¿¹. 'myTNS'
$conn->PConnect(false, 'scott', 'tiger', 'myTNS');
¶Ç´Â
$conn->PConnect('myTNS', 'scott', 'tiger');
c. È£½ºÆ® ÁÖ¼Ò¿Í SID
$conn->Connect('192.168.0.1', 'scott', 'tiger', 'SID');
d. È£½ºÆ® ÁÖ¼Ò¿Í ¼ºñ½º ¸í
$conn->Connect('192.168.0.1', 'scott', 'tiger', 'servicename');
ODBC´Â ODBC Á¦¾îÆÇÀ¸·Î DSNÀ» »ý¼ºÇϰųª DSNÀÌ ¾øÀÌ ¿¬°áÇÒ ¼ö ÀÖ´Ù.ODBC·Î DSNÀÌ ¾øÀÌ ¿¬°áÇÏ·Á¸é PHP 4.3 ÀÌ»óÀ» ÇÊ¿ä·Î ÇÑ´Ù.
Microsoft Access:
$db =& ADONewConnection('access');
$dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=d:\northwind.mdb;Uid=Admin;Pwd=;";
$db->Connect($dsn);
Microsoft SQL Server:
$db =& ADONewConnection('odbc_mssql');
$dsn = "Driver={SQL Server};Server=localhost;Database=northwind;";
$db->Connect($dsn,'userid','password');
ADO·Î DSNÀÌ ¾øÀÌ ¿¬°áÇϱâ
<?php
include('adodb.inc.php');
ADOLoadCode("ado_mssql");
$db = &ADONewConnection("ado_mssql");
print "<h1>DSNÀÌ ¾ø´Â DB ¿¬°á: $db->databaseType...</h1>";
$myDSN="PROVIDER=MSDASQL;DRIVER={SQL Server};"
. "SERVER=flipper;DATABASE=ai;UID=sa;PWD=;" ;
$db->Connect($myDSN);
$rs = $db->Execute("select * from table");
$arr = $rs->GetArray();
print_r($arr);
?>
ADOdb´Â ´ëÇü Å©·¡½º ÀÌÁö¸¸ ´Ù¸¥ ¸ðµç PHP Å©·¡½º¿¡¹èÇØ ¼º´É»ó ÀϰüµÈ ¿ìÀ§¸¦ º¸¿©¿Ô´Ù. ÀÌ °ÍÀº Onion°ú °°Àº °èÃþÈ ÆÐ¼Ç(ÇÙ½É ·¹ÀÌ¿©¿¡¼ °¡Àå ºü¸¥ ÇÔ¼ö)À¸·Î ¼³°èµÇ¾ú±â ¶§¹®ÀÌ´Ù. ÃÖÀûÀÇ ¼º´ÉÀ» À§ÇØ ´ÙÀ½ ÇÔ¼ö¸¦ °í¼öÇϱâ¹Ù¶õ´Ù.:
ÇÙ½É ·¹ÀÌ¿© |
Connect, PConnect, NConnect |
Çʵ忡 Á¢±ÙÇÏ´Â °¡Àå ºü¸¥ ¹æ¹ýÀº ¹è¿, $recordset->fields¸¦ Á÷Á¢ Á¢±ÙÇÏ´Â °ÍÀÌ´Ù. ¶ÇÇÑ µ¥ÀÌŸº£À̽º¿¡ ¿¬°áÇϱâÀü¿¡ Àü¿ª º¯¼ö, $ADODB_FETCH_MODE = ADODB_FETCH_NUM¿Í $ADODB_COUNTRECS = false¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
µ¥ÀÌŸº£À̽º°¡ ¹ÙÀεùÀ» Áö¿øÇÑ´Ù¸é ¹ÙÀεùÀ» »ç¿ëÇϱ⠹ٶõ´Ù. ¹ÙÀεùÀº Äõ¸®¸¦ ´Ù½Ã »ç¿ëÇÒ ¶§ ¼º´ÉÀÌ °³¼±µÈ´Ù. º´¸ñ Çö»óÀ» ÆÇÁ¤ÇϱâÀ§ÇØ ADOdbÀÇ ¼º´É Æ©´× ½Ã½ºÅÛÀ» »ç¿ëÇϱ⠹ٶõ´Ù.
¸¶Áö¸·À¸·Î APC, Turck MMCache, Zend Accelerator³ª ionCube¿Í°°Àº PHP °¡¼Ó±â°¡ ¼³Ä¡µÇ¾î ÀÖ´ÂÁö È®½ÇÈ÷Çϱ⠹ٶõ´Ù.
ÇÊ¿äÇÑ °æ¿ì ADOdb¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. ´ÙÇàÈ÷ ADOdb¸¦ ÇÏÀ§ Å©·¡½º·Î ¸¸µé°í $ADODB_NEWCONNECTION º¯¼ö¸¦ »ç¿ëÇÔÀ¸·Î¼ ¿ªÈ£È¯¼ºÀ» À¯ÁöÇÒ ¼ö ÀÖ´Ù. $ADODB_NEWCONNECTIONÀ¸·Î ADONewConnection()ÀÇ µ¿ÀÛÀ» Á¦¾îÇÒ ¼ö ÀÖ´Ù. ADONewConnection()Àº ÀÌ º¯¼ö¸¦ °Ë»çÇϰí ÀÌ º¯¼ö°¡ Á¤ÀÇµÈ °æ¿ì ÀÌ º¯¼ö¿¡¼ Áö½ÃÇÏ´Â ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.
´ÙÀ½ ¿¹´Â Á¢¼Ó °³Ã¼¸¦ »ý¼ºÇÏ´Â »õ·Î¿î ÇÔ¼ö, hack_mysql°ú hack_postgres7¸¦ ¸¸µå´Â ¿¹ÀÌ´Ù. ·¹ÄÚµå¼Â °³Ã¼ À̸§À» ºÎ¿©ÇÏ´Â ±ÔÄ¢Àº $rsPrefix¸¦ »ç¿ëÇØ¼ Á¦¾îÇÒ ¼ö ÀÖ´Ù. ÀÌ ¿¹¿¡¼´Â 'hack_rs_'¸¦ »ç¿ëÇϰí ÀÖÀ¸¸ç, ÀÌ·ÎÀÎÇØ ADOdb´Â ·¹ÄÚµå¼Â °³Ã¼·Î¼ hack_rs_mysql¿Í hack_rs_postgres7¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ±âº» ADOdb µå¶óÀ̹ö¸¦ ¿øÇÑ´Ù¸é °ÅÁþÀ» ¸®ÅÏÇÏ¸é µÈ´Ù.
class hack_mysql extends adodb_mysql {
var $rsPrefix = 'hack_rs_';
/* ÀڽŸ¸ÀÇ ±â´É */
}
class hack_rs_mysql extends ADORecordSet_mysql {
/* ÀڽŸ¸ÀÇ ±â´É */
}
class hack_postgres7 extends adodb_postgres7 {
var $rsPrefix = 'hack_rs_';
/* ÀڽŸ¸ÀÇ ±â´É */
}
class hack_rs_postgres7 extends ADORecordSet_postgres7 {
/* ÀڽŸ¸ÀÇ ±â´É */
}
$ADODB_NEWCONNECTION = 'hack_factory';
function& hack_factory($driver)
{
if ($driver !== 'mysql' && $driver !== 'postgres7') return false;
$driver = 'hack_'.$driver;
$obj = new $driver();
return $obj;
}
include_once('adodb.inc.php');
ºÎ¸ð Å©·¡½ºÀÇ »ý¼ºÀÚ¸¦ ¹Ýµå½Ã È£ÃâÇØ¾ß ÇÑ´Ù.
ADOdb 4.02 ÀÌ»óÀº »ç¿ëÇϰí ÀÖ´Â PHP ¹öÀüÀÌ ¹«¾úÀÎÁö ºÐ¸íÇÏ°Ô °áÁ¤ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à PHP5°¡ °ËÃâµÇ¸é ´ÙÀ½ Ư¡À» »ç¿ëÇÒ ¼ö ÀÖ´Ù:
PHP5 Ư¡
Áö¿øµÇ´Â DB
| À̸§ | °Ë»ç | DB | RecordCount() Áö¿ø | ÀüÁ¦Á¶°Ç | ¿î¿µÃ¼°è |
| access | B | Microsoft Access/Jet. ODBC DSNÀ» »ý¼º. | Y/N | ODBC | Windows ¸¸ |
| ado | B | ÀÏ¹Ý ADO(ƯÁ¤ DB·Î Æ©´×µÇÁö ¾ÊÀº ADO). DSN ¾øÀÌ ¿¬°á °¡´É. ÃÖÀûÀÇ ¼º´ÉÀÌ ÇÊ¿äÇÑ °æ¿ì OLEDB¸¦ »ç¿ë. ÀÌ °ÍÀº ¸ðµç ADO µå¶óÀ̹öÀÇ ±âº» Å©·¡½ºÀÓ. ¿¬°áÀü $db->codePage¸¦ ¼³Á¤ÇÒ ¼ö ÀÖÀ½. |
?´Â DB¿¡ ÀÇÁ¸ | ADO ¶Ç´Â OLEDB | Windows ¸¸ |
| ado_access | B | ADO¸¦ »ç¿ëÇÑ Microsoft Access/Jet. DSN ¾øÀÌ ¿¬°á °¡´É. ÃÖÀûÀÇ ¼º´ÉÀÌ ÇÊ¿äÇÑ °æ¿ì OLEDB¸¦ »ç¿ë. | Y/N | ADO ¶Ç´Â OLEDB | Windows ¸¸ |
| ado_mssql | B | ADO¸¦ »ç¿ëÇÑ Microsoft SQL Server. DSN ¾øÀÌ ¿¬°á °¡´É. ÃÖÀûÀÇ ¼º´ÉÀÌ ÇÊ¿äÇÑ °æ¿ì OLEDB¸¦ »ç¿ë. | Y/N | ADO ¶Ç´Â OLEDB | Windows ¸¸ |
| db2 | A | DB2. ½Å·Ú¼ºÀÖ´Â µ¿ÀÛÀº ODBC µå¶óÀ̹ö¸¦ »ç¿ëÇØ¾ß ÇÔ. | Y/N | DB2 CLI/ODBC ÀÎÅÍÆäÀ̽º | Unix¿Í Windows. Unix ¼³Ä¡ ÈùÆ®. |
| vfp | A | Microsoft Visual FoxPro. ODBC DSNÀ» »ý¼ºÇØ¾ß ÇÔ. | Y/N | ODBC | Windows ¸¸ |
| fbsql | C | FrontBase. | Y | ? | Unix¿Í Windows |
| ibase | B | Interbase 6 ¶Ç´Â ±× ÀÌÇÏ. ¸î¸î »ç¿ëÀÚÀÇ º¸°í¿¡ µû¸£¸é $db->PConnect('localhost:c:/ibase/employee.gdb', "sysdba", "masterkey")¸¦ »ç¿ëÇØ¼ ¿¬°áÇØ¾ß ÇÔ. ÇöÀç Affected_Rows¸¦ Áö¿øÇÏÁö ¾ÊÀ½. ¿¬°á Àü¿¡ $db->dialect, $db->buffers¿Í $db->charSet ¼³Á¤ÇÒ ¼ö ÀÖÀ½. |
Y/N | Interbase Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| firebird | C | InterbaseÀÇ Firebird ¹öÀü. | Y/N | Interbase Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| borland_ibase | C | Interbase 6.5 ÀÌ»óÀÇ Borland ¹öÀü. Æ÷Å©ÇÏ´Â ¹æ¹ýÀÌ ´Ù¸§. | Y/N | Interbase Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| informix72 | C | SELECT FIRST¸¦ Áö¿øÇÏÁö ¾Ê´Â Informix 7.3ÀÌÀü ¹öÀüÀÇ Informix. | Y/N | Informix Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| informix | C | ÀÏ¹Ý informix µå¶óÀ̹ö. | Y/N | Informix Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| mssql | A | Microsoft SQL Server 7 ÀÌ»ó. Microsoft SQL Server 2000 ¶ÇÇÑ Àß µ¿ÀÛÇÔ. ÁÖÀÇ: ÀÌ µå¶óÀ̹ö´Â ³¯Â¥ º¯È¯¿¡ ¹®Á¦°¡ ÀÖÀ½. ¿¹: PHP mssql È®Àå ¸ðµâÀº datetime¿¡¼ ½Ã°£À» ¸®ÅÏÇÏÁö ¾ÊÀ½. |
Y/N | Mssql Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows. |
| mssqlpo | A | ȣȯ¼ºÀÖ´Â msssql µå¶óÀ̹ö. À§ÀÇ mssql µå¶óÀ̹ö¿Í µ¿ÀÏÇÏÁö¸¸ '||'(¿¬°á ¿¬»êÀÚ)°¡ '+'·Î ¹Ù²ñ. ||¸¦ »ç¿ëÇÏ´Â ´Ù¸¥ SQL º¯Á¾À¸·ÎºÎÅÍ ½ºÅ©¸³Æ®¸¦ Æ÷ÆÃÇϴµ¥ À¯¿ë. |
Y/N | Mssql Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows. |
| mysql | A | Æ®·¢Àè¼ÇÀ» Áö¿øÇÏÁö ¾Ê´Â MySQL. ¿¬°áÇϱâ Àü¿¡ $db->clientFlags ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖÀ½. | Y/N | MySQL Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| mysqlt ¶Ç´Â maxsql | A | Æ®·£Àè¼ÇÀ» Áö¿øÇÏ´Â MySQL. ÃÖÀûÀÇ ¼º´ÉÀ» À§ÇØ ¿¬°á ¿¬»êÀÚ·Î ||¸¦ »ç¿ëÇÒ °ÍÀ» ±Ç°í. ÀÌ °ÍÀº MySQL¸¦ mysqld --ansi³ª mysqld --sql-mode=PIPES_AS_CONCAT·Î ±âµ¿ÇÔÀ¸·Î¼ »ç¿ëÇÒ ¼ö ÀÖÀ½ |
Y/N | MySQL Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| oci8 | A | Oracle 8/9. oracleº¸´Ù ±â´ÉÀûÀ¸·Î ÈξÀ ¿ì¼öÇÔ(¿¹. Affected_Rows). Connect/PConnectÀü¿¡ putenv('ORACLE_HOME=...')¸¦ ¼³Á¤ÇÒ ¼ö ÀÖÀ½. 2°¡Áö ¿¬°á ¹æ¹ý Á¦°ø - ¼¹ö IP/¼ºñ½º À̸§: 2.31 ÀÌ»ó ¹öÀüÀº Oracle REF Ä¿¼ º¯¼ö¸¦ Á÷Á¢ Áö¿øÇÔ(ExecuteCursor¸¦ º¸±â ¹Ù¶÷). |
Y/N | Oracle Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| oci805 | C | Oracle 8.0.5¿¡´ëÇØ Á¦ÇÑÀûÀÎ Oracle ±â´É Áö¿ø. SelectLimit´Â oci8³ª oci8po¿¡¼Ã³·³ È¿°úÀûÀÌÁö ¸øÇÔ. | Y/N | Oracle Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| oci8po | A | ȣȯ¼º ÀÖ´Â Oracle 8/9µå¶óÀ̹ö. ÀÌ µå¶óÀ̹ö´Â oci8 µå¶óÀ̹ö¿Í °ÅÀÇ µ¿ÀÏÇÏÁö¸¸ (a) Prepare()ÀÇ ¹ÙÀÎµå º¯¼ö¿¡ :bindvar ´ë½Å ?¸¦ »ç¿ëÇϸç, (b) Çʵå¸í¿¡ ¼Ò¹®ÀÚ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´Ù¸§. ´Ù¸¥ µ¥ÀÌŸ º£À̽º·Î Æ÷ÆÃÇÏ´Â °ÍÀÌ Áß¿äÇÑ °æ¿ì ÀÌ µå¶óÀ̹ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁÀ½. ±×·¸Áö¾ÊÀº °æ¿ì º¸´Ù ³ªÀº ¼ºÀ» À§ÇØ oci8 µå¶óÀ̹ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÔ. |
Y/N | Oracle Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| odbc | A | ÀÏ¹Ý ODBC(ƯÁ¤ DB·Î Æ©´×µÇÁö¾ÊÀº ODBC). Á¢¼ÓÀ» À§ÇØ PConnect('DSN','user','pwd')¸¦ »ç¿ë. ÀÌ µå¶óÀ̹ö´Â ¸ðµç ODBC µå¶óÀ̹öÀÇ ±âº» µå¶óÀ̹öÀÓ.. |
?´Â DB¿¡µû¶ó ´Ù¸§ | ODBC | Unix¿Í Windows. Unix ÈùÆ®. |
| odbc_mssql | C | ODBC·Î MSSQL¿¡ ¿¬°áÇÒ ¶§ »ç¿ë | Y/N | ODBC | Unix¿Í Windows. |
| odbc_oracle | C | ODBC·Î Oracle¿¡ ¿¬°áÇÒ ¶§ »ç¿ë | Y/N | ODBC | Unix¿Í Windows. |
| oracle | C | ±¸Çü Oracle 7 Ŭ¶óÀÌ¾ðÆ® API·Î ±¸Çö. º¸´Ù ³ªÀº ¼º´ÉÀ» À§ÇØ °¡´ÉÇÑ oci8 µå¶óÀ̹ö¸¦ »ç¿ëÇϱ⠹ٶ÷. | Y/N | Oracle Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows |
| postgres | A | ÀÏ¹Ý PostgreSQL µå¶óÀ̹ö. ÇöÀç postgres7 µå¶óÀ̹ö¿Í µ¿ÀÏ. | Y | PostgreSQL Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows. |
| postgres64 | A | ³»ºÎÀûÀ¸·Î LIMIT¸¦ Áö¿øÇÏÁö¾Ê´Â PostgreSQL 6.4 ÀÌÇÏ¿¡¼ »ç¿ë. | Y | PostgreSQL Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows. |
| postgres7 | A | LIMIT¿Í ¹öÀü 7 ±â´ÉÀ» Áö¿øÇÏ´Â PostgreSQL¿¡¼ »ç¿ë. | Y | PostgreSQL Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows. |
| sapdb | C | SAP DB. ½Å·Ú¼ºÀÖ´Â µ¿ÀÛÀº ODBC µå¶óÀ̹ö¸¦ »ç¿ëÇØ¾ß ÇÔ. | Y/N | SAP ODBC Ŭ¶óÀÌ¾ðÆ® | ? |
| sqlanywhere | C | Sybase SQL Anywhere. ½Å·Ú¼ºÀÖ´Â µ¿ÀÛÀº ODBC µå¶óÀ̹ö¸¦ »ç¿ëÇØ¾ß ÇÔ. | Y/N | SQL Anywhere ODBC Ŭ¶óÀÌ¾ðÆ® | ? |
| sqlite | B | SQLite. PHP5¿¡¼¸¸ Å×½ºÆ®ÇÔ. | Y | - | Unix¿Í Windows. |
| sybase | C | Sybase. | Y/N | Sybase Ŭ¶óÀÌ¾ðÆ® | Unix¿Í Windows. |
"°Ë»ç" Ä÷³Àº ÄÚµåÀÇ °Ë»ç »óÅÂ¿Í »ç¿ë »óŸ¦ ³ªÅ¸³½´Ù.
A = ¸¹Àº »ç¶÷¿¡ÀÇÇØ ¿©·¯¹ø °ËnfµÇ¾úÀ¸¸ç ¸¹Àº »ç¶÷µéÀÌ »ç¿ëÇϰí ÀÖÀ½
B = ÀϺΠ»ç¶÷µé¿¡ÀÇÇØ °Ë»çµÇ¾ú°í »ç¿ëÁßÀÌÁö¸¸ ¸î¸î Ư¡ÀÌ ±¸ÇöµÇÁö ¾Ê¾ÒÀ» ¼ö ÀÖÀ½
C = »ç¿ëÀÚ°¡ Á¦°øÇÑ Äڵ峪 ½ÇÇèÀûÀÎ µå¶óÀ̹ö. ADOdb ÃֽйöÀüÀÇ ¸ðµç Ư¡À» ¿ÏÀüÈ÷ Áö¿øÇÏÁö ¸øÇÒ ¼ö ÀÖÀ½.
"RecordCount() Áö¿ø" Ä÷³Àº SELECT ¹®ÀÌ ½ÇÇàµÉ ¶§ RecordCount()°¡ Çà¼ö¸¦ ¸®ÅÏÇÏ´ÂÁö -1À» ¸®ÅÏÇÏ´ÂÁö¸¦ ÀǹÌÇÑ´Ù. ¸¸¾à Ä÷³ÀÌ Y/N¶ó¸é RecordCount()´Â Àü¿ªº¯¼ö $ADODB_COUNTRECS°¡ ÂüÀ¸·Î ¼³Á¤(±âº»°ª)µÉ ¶§ ¿¡¹Ä·¹ÀÌÆ®µÈ´Ù. ´ëÇü ·¹ÄÚµå¼ÂÀÇ °æ¿ì RecordCount() ¿¡¹Ä·¹À̼ÇÀ» »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. ¿Ö³ÄÇÏ¸é ´ëÇü ·¹ÄÚµå¼ÂÀ» ij½¬ÇϱâÀ§ÇØ ¸¹Àº ·®ÀÇ ¸Þ¸ð¸®°¡ ÇÊ¿äÇϱ⶧¹®¿¡´Ù. ¶ÇÇÑ ¿¡¹Ä·¹À̼ÇÀ» »ç¿ëÇÏ´Â °æ¿ì 40-50%ÀÇ ¼º´ÉÀÌ °¨¼ÒÇÑ´Ù. PostgreSQL°ú MySQLÀ» Á¦¿ÜÇÑ µ¥ºÎºÐÀÇ DB¿¡¼ ÀÌ ±â´ÉÀº ¿¡¹Ä·¹À̼ÇÀ¸·Î ±¸ÇöµÈ´Ù.
ÀÛ¾÷: Access Northwind DSN¿¡ ¿¬°áÇÏ°í °¢ÇàÀÇ Ã¹ 2°³ÀÇ Ä÷³À» Ãâ·Â.
ÀÌ ¿¹¿¡¼ µ¥ÀÌŸº£À̽º¿¡´ëÇÑ ¿¬°áÀ» Ç¥ÇöÇÏ´Â ADOConnection °³Ã¼¸¦ »ý¼ºÇÑ´Ù. Á¢¼ÓÀº PConnect(¿µ±¸ Á¢¼Ó)·Î ÃʱâȵȴÙ. µ¥ÀÌŸº£À̽º¿¡ ÁúÀÇÇϱâÀ§ÇØ ADOConnection.Execute() ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÌ ÇÔ¼ö´Â fields[] ¹è¿·Î ÇöÀçÇà¿¡´ëÇÑ Ä¿¼¸¦ Áö½ÃÇϰí ÀÖ´Â ADORecordSet °³Ã¼¸¦ ¸®ÅÏÇÑ´Ù. Çà¿¡¼ ÇàÀ¸·Î À̵¿ÇϱâÀ§ÇØ MoveNext()¸¦ »ç¿ëÇÑ´Ù.
NB: ÀÌ ¿¹¿¡¼ »ç¿ëµÇÁö¾ÊÀº À¯¿ëÇÑ ÇÔ¼ö´Â SelectLimit·Î ÀÌ ÇÔ¼ö´Â Ãâ·ÂµÉ ÇàÀÇ ¼ö¸¦ Á¦ÇÑÇÒ ¼ö ÀÖ´Ù.
<?
include('adodb.inc.php'); # ADOdb °øÅë ÄÚµå ÀÐÀ½
$conn = &ADONewConnection('access'); # Á¢¼Ó »ý¼º
$conn->PConnect('northwind'); # MS-Access, northwind DSN¿¡ ¿¬°á
$recordSet = &$conn->Execute('select * from products');
if (!$recordSet)
print $conn->ErrorMsg();
else
while (!$recordSet->EOF) {
print $recordSet->fields[0].' '.$recordSet->fields[1].'<BR>';
$recordSet->MoveNext();
}
$recordSet->Close(); # ¿É¼Ç
$conn->Close(); # ¿É¼Ç
?>
¸®ÅÏµÈ $recordSetÀº $recordSet->fields ¹è¿¿¡ ÇöÀçÇàÀ» ÀúÀåÇϰí ÀÖ´Ù. ÀÌ ¹è¿Àº ¿µ¿¡¼ ½ÃÀÛÇϸç Ä÷³ ¹øÈ£¿¡ÀÇÇØ ÂüÁ¶µÈ´Ù. ´ÙÀ½ ÇàÀ¸·Î À̵¿ÇϱâÀ§ÇØ MoveNext() ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. EOF ¼Ó¼ºÀº ÆÄÀϳ¡(End of File)¿¡ µµ´ÞÇϸé ÂüÀ¸·Î ¼³Á¤µÈ´Ù. Execute()¿¡¼ ¿À·ù°¡ ¹ß»ýÇÏ¸é ·¹ÄÚµå¼Â ´ë½Å °ÅÁþÀÌ ¸®ÅϵȴÙ.
$recordSet->fields[] ¹è¿Àº PHP µ¥ÀÌŸº£À̽º È®Àå ¸ðµâ¿¡ÀÇÇØ »ý¼ºµÈ´Ù. ¸î¸î µ¥ÀÌŸº£À̽º È®Àå ¸ðµâÀº ´ÜÁö ¼ýÀÚ¿¡ÀÇÇØ¼¸¸ ÂüÁ¶ÇÒ ¼ö ÀÖ°í Çʵå À̸§¿¡ÀÇÇØ¼´Â ÂüÁ¶ÇÒ ¼ö ¾ø´Â ¹è¿À» ¸®ÅÏÇÑ´Ù. °Á¦·Î Çʵå À̸§¿¡ÀÇÇØ ÂüÁ¶(¿¬°ü¹è¿)ÇϱâÀ§ÇØ SetFetchMode ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. °¢°¢ÀÇ ·¹ÄÚµå¼ÂÀº Execute()³ª SelectLimit()¿¡ÀÇÇØ »ý¼ºµÉ¶§ÀÇ ÆäÄ¡ ¸ðµå¿¡µû¶ó ÀúÀå, »ç¿ëµÈ´Ù.
$db->SetFetchMode(ADODB_FETCH_NUM);
$rs1 = $db->Execute('select * from table');
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$rs2 = $db->Execute('select * from table');
print_r($rs1->fields); # array([0]=>'v0',[1] =>'v1')¸¦ Ãâ·Â
print_r($rs2->fields); # array(['col1']=>'v0',['col2'] =>'v1')¸¦ Ãâ·Â
Select ¹®¿¡ÀÇÇØ »ý¼ºµÈ Çà ¼ö¸¦ ¾ò±âÀ§ÇØ $recordSet->RecordCount()¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÁÖÀÇ: ¸®ÅÏµÈ ÇàÀÇ ¼ö¸¦ °áÁ¤ÇÒ ¼ö ¾ø´Â °æ¿ì -1ÀÌ ¸®ÅϵȴÙ.
Å×À̺íÀ» °Ë»öÇϰí ù µÎ Ä÷³À» Ãâ·ÂÇÑ´Ù. ¸¸¾à µÎ¹øÂ° Ä÷³ÀÌ ³¯Â¥ ¶Ç´Â ŸÀÓ½ºÅÆÇÁ¶ó¸é US ³¯Â¥ Çü½ÄÀ¸·Î º¯È¯µÈ´Ù.
<?
include('adodb.inc.php'); # ADOdb °øÅë ÄÚµå Àбâ
$conn = &ADONewConnection('access'); # Á¢¼Ó »ý¼º
$conn->PConnect('northwind'); # MS-Access, northwind dsn¿¡ ¿¬°á
$recordSet = &$conn->Execute('select CustomerID,OrderDate from Orders');
if (!$recordSet)
print $conn->ErrorMsg();
else
while (!$recordSet->EOF) {
$fld = $recordSet->FetchField(1);
$type = $recordSet->MetaType($fld->type);
if ( $type == 'D' || $type == 'T')
print $recordSet->fields[0].' '.
$recordSet->UserDate($recordSet->fields[1],'m/d/Y').'<BR>';
else
print $recordSet->fields[0].' '.$recordSet->fields[1].'<BR>';
$recordSet->MoveNext();
}
$recordSet->Close(); # ¿É¼Ç
$conn->Close(); # ¿É¼Ç
?>
ÀÌ ¿¹¿¡¼ µÎ¹øÂ° Ä÷³ÀÇ ÇʵåÇüÀ» FetchField()¸¦ »ç¿ëÇØ¼ °Ë»çÇÑ´Ù. ÀÌ ÇÔ¼ö´Â Àû¾îµµ 3°³ Çʵ带 °®´Â °³Ã¼¸¦ ¸®ÅÏÇÑ´Ù.
±×¸®°í DB °íÀ¯ÀÇ ÇʵåÇüÀ» ÀϹÝÇüÀ¸·Î º¯È¯ÇϱâÀ§ÇØ MetaType()¸¦ »ç¿ëÇÑ´Ù. ÇöÀç ´ÙÀ½°ú °°Àº ÀϹÝÇüÀÌ Á¤ÀǵǾîÀÖ´Ù:
metatypeÀÌ ³¯Â¥³ª ŸÀÓ½ºÅÆÇÁ¶ó¸é UserDate()¸¦ »ç¿ëÇØ¼ PHP, SQL Çü½ÄÀÇ ³¯Â¥¸¦ »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ Çü½ÄÀ¸·Î º¯È¯ÇÑ´Ù. MetaType()Àº SQL·Î Insert³ª Update¸¦ ÇϱâÀü µ¥ÀÌŸ¸¦ °ËÁõÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
³¯Â¥¿Í ¹®ÀÚ¿À» Æ÷ÇÔÇÏ´Â ÇàÀ» Orders Å×ÀÌºí¿¡ »ðÀÔÇÑ´Ù. À̶§ »ðÀÔÇÏ´Â ¹®ÀÚ¿¿¡ John's¿Í°°ÀÌ ÀÛÀº µû¿ÈÇ¥°¡ Æ÷ÇÔµÈ °æ¿ì DB¿¡ »ðÀÔÇÒ ¼ö ÀÖµµ·Ï ÀοëÇÑ´Ù.
<?
include('adodb.inc.php'); # ADOdb °øÅë ÄÚµå Àбâ
$conn = &ADONewConnection('access'); # Á¢¼Ó »ý¼º
$conn->PConnect('northwind'); # MS-Access, northwind DSN¿¡ ¿¬°á
$shipto = $conn->qstr("John's Old Shoppe");
$sql = "insert into orders (customerID,EmployeeID,OrderDate,ShipName) ";
$sql .= "values ('ANATR',2,".$conn->DBDate(time()).",$shipto)";
if ($conn->Execute($sql) === false) {
print 'error inserting: '.$conn->ErrorMsg().'<BR>';
}
?>
ÀÌ ¿¹¿¡¼ ADOdbÀÇ º¸°µÈ ³¯Â¥ ¹× Àοë ó¸® ´É·ÂÀ» ¾Ë ¼ö ÀÖ´Ù. Unix ŸÀÓ½ºÅÆÇÁ(ÀϹÝÀûÀ¸·Î Long IntegerÀÎ)´Â DBDate()¸¦ »ç¿ëÇØ¼ Access¿¡ Àû´çÇÑ Çü½ÄÀ¸·Î º¯È¯µÇ°í, ¿Ã¹Ù¸¥ Escape ¹®ÀÚ°¡ John's Old Shoppe¸¦ ÀοëÇϴµ¥ »ç¿ëµÈ´Ù. Áï, PHPÀÇ ±âº»°ªÀÎ John's Old Shoppe°¡ ¾Æ´Ï¶ó qstr()¸¦ »ç¿ëÇØ¼ John''s Old Shoppe·Î ÀοëµÈ´Ù.
Execute ¹®ÀÇ ¿À·ù 󸮿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. ¸¸¾à ¿À·ù°¡ ¹ß»ýÇϸé Execute() ´Â °ÅÁþÀ» ¸®ÅÏÇÑ´Ù. ¸¶Áö¸· ¿À·ù¿¡´ëÇÑ ¿À·ù ¸Þ½ÃÁö´Â ErrorMsg()·Î Ãâ·ÂµÈ´Ù. ÁÖÀÇ: ¿À·ù ¸Þ½ÃÁö¸¦ ÀúÀåÇϱâÀ§ÇØ php_track_errors¸¦ »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.
<?
include('adodb.inc.php'); # ADOdbÀÇ °øÅë ÄÚµå Àбâ
$conn = &ADONewConnection('access'); # Á¢¼Ó »ý¼º
$conn->PConnect('northwind'); # MS-Access, northwind DSN¿¡ ¿¬°á
$shipto = $conn->qstr("John's Old Shoppe");
$sql = "insert into orders (customerID,EmployeeID,OrderDate,ShipName) ";
$sql .= "values ('ANATR',2,".$conn->FormatDate(time()).",$shipto)";
$conn->debug = true;
if ($conn->Execute($sql) === false) print 'error inserting';
?>
À§ÀÇ ¿¹¿¡¼´Â debug = true·Î ¼³Á¤ÇÔÀ¸·Î¼ µð¹ö±ë ¸ðµå·Î ¼³Á¤Çß´Ù. µð¹ö±ë ¸ðµå¸¦ ¼³Á¤Çϸé SQL ¹®À» ½ÇÇàÇϱâÀü¿¡ SQL ¹®ÀåÀÌ Ãâ·ÂµÇ¸ç, ÀÓÀÇÀÇ ¿À·ù ¸Þ½ÃÁö ¿ª½Ã ÇÔ²² Ãâ·ÂµÈ´Ù. µð¹ö±ë ¸ðµå¸¦ »ç¿ëÇÒ ¶§¿¡´Â ErrorMsg() ÇÔ¼ö¸¦ È£ÃâÇÒ Çʿ䰡¾ø´Ù. ·¹ÄÚµå¼ÂÀ» Ãâ·ÂÇϱâÀ§Çؼ´Â rs2html() ÀÇ ¿¹¸¦ º¸±â ¹Ù¶õ´Ù.
¶ÇÇÑ »ç¿ëÀÚ ¿À·ù 󸮸¦ º¸±â¹Ù¶õ´Ù.
MySQL agora µ¥ÀÌŸº£À̽º¿¡ ¿¬°áÇϰí SQL ¹®À» ½ÇÇàÇÑ °á°ú·ÎºÎÅÍ <select> ¸Þ´º¸¦ »ý¼ºÇÑ´Ù. ȸ鿡 Ãâ·ÂµÇ´Â <option> °ªÀº ù¹øÂ° Ä÷³ÀÌ »ç¿ëµÇ¸ç ¼¹ö·Î Àü¼ÛµÇ´Â °ªÀº µÎ¹øÂ° Ä÷³ÀÌ »ç¿ëµÈ´Ù.
<?
include('adodb.inc.php'); # ADOdb °øÅë ÄÚµå Àбâ
$conn = &ADONewConnection('mysql'); # Á¢¼Ó »ý¼º
$conn->PConnect('localhost','userid','','agora');# MySQL, agora µ¥ÀÌŸ º£À̽º¿¡ ¿¬°á
$sql = 'select CustomerName, CustomerID from customers';
$rs = $conn->Execute($sql);
print $rs->GetMenu('GetCust','Mary Rosli');
?>
ÀÌ ¿¹´Â GetCust(Select ű×ÀÇ À̸§)¶ó´Â ¸Þ´º¸¦ Á¤ÀÇÇϰí, ±âº»°ªÀ¸·Î 'Mary Rosli'¸¦ ÁöÁ¤ÇÑ ¿¹ÀÌ´Ù. GetMenu()¸¦ Âü°íÇϱâ¹Ù¶õ´Ù. ADOdb´Â ·¹ÄÚµå¼ÂÀ» ¹è¿·Î¼ ¸®ÅÏÇÏ´Â ÇÔ¼ö, GetArray()¸¦ °¡Áö°í ÀÖ´Ù. ¶ÇÇÑ Ã¹¹øÂ° Ä÷³À» Ű·ÎÇÏ´Â ¿¬°ü¹è¿¸¦ ¸®ÅÏÇÏ´Â GetAssoc()µµ ÀÖ´Ù.
<?
include('adodb.inc.php'); # ADOdb °øÅë ÄÚµå
$conn1 = &ADONewConnection('mysql'); # mysql Á¢¼Ó »ý¼º
$conn2 = &ADONewConnection('oracle'); # oracle Á¢¼Ó »ý¼º
$conn1->PConnect($server, $userid, $password, $database);
$conn2->PConnect(false, $ora_userid, $ora_pwd, $oraname);
$conn1->Execute('insert ...');
$conn2->Execute('update ...');
?>
´ÙÀ½ ¿¹´Â (ID, FirstName, LastName, Created) Çʵ带 °®´Â Å×ÀÌºí¿¡ Á¢±ÙÇÒ ¶§ ÀÌ ÇÔ¼ö¸¦ ¾î¶»°Ô »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö¸¦ º¸À̰í ÀÖ´Ù.
ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϱâÀü Å×ÀÌºí¿¡´ëÇØ SELECT ¹®À» ¼öÇàÇÔÀ¸·Î¼ ·¹ÄÚµå¼ÂÀ» ÃʱâÈÇÒ Çʿ䰡 ÀÖ´Ù. ´ÙÀ½ ÄÚµå´Â Jonathan Younger(jyounger#unilab.com)ÀÇ »ý°¢ÀÌ´Ù.
<?
#==============================================
# °£´ÜÇÑ GetUpdateSQL()°ú GetInsertSQL() ÄÚµå
#==============================================
include('adodb.inc.php');
include('tohtml.inc.php');
#==========================
# INSERT Å×½ºÆ®
$sql = "SELECT * FROM ADOXYZ WHERE id = -1";
# ºó ·¹Äڵ带 °Ë»ö
$conn = &ADONewConnection("mysql"); # Á¢¼Ó »ý¼º
$conn->debug=1;
$conn->PConnect("localhost", "admin", "", "test"); # MySQL, testdb¿¡ ¿¬°á
$rs = $conn->Execute($sql); # ÁúÀǸ¦ ¼öÇàÇÏ°í ºó ·¹ÄÚµå¼ÂÀ» °¡Á®¿È
$record = array(); # ·¹ÄÚµå µ¥ÀÌŸ¸¦ ÀúÀåÇÒ ¹è¿À» ÃʱâÈ
# »ðÀÔÇÒ ·¹ÄÚµåÀÇ Çʵå¿Í °ªÀ» ¼³Á¤
# ÁÖÀÇ: Çʵå¸íÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÔ
$record["firstname"] = "Bob";
$record["lastNamE"] = "Smith";
$record["creaTed"] = time();
# ºó ·¹ÄÚµå¼Â°ú »ðÀÔÇÒ µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÏ´Â ¹è¿À» GetInsertSQL ÇÔ¼ö¿¡ Àü´Þ
# ÀÌ ÇÔ¼ö´Â µ¥ÀÌŸ¸¦ ó¸®ÇÏ°í ¿ÏÀüÈ÷ Çü½ÄÈµÈ INSERT SQL ¹®À» ¸®ÅÏÇÔ
$insertSQL = $conn->GetInsertSQL($rs, $record);
$conn->Execute($insertSQL); # µ¥ÀÌŸ º£À̽º¿¡ »ðÀÔ
#==========================
# UPDATE Å×½ºÆ®
$sql = "SELECT * FROM ADOXYZ WHERE id = 1";
# °»½ÅÇÒ ·¹Äڵ带 °Ë»ö
$rs = $conn->Execute($sql); # ÁúÀǸ¦ ¼öÇàÇÏ°í ¾÷µ¥ÀÌÆ®ÇÒ ·¹Äڵ带 °¡Á®¿È
$record = array(); # ·¹ÄÚµåÀÇ µ¥ÀÌŸ¸¦ ÀúÀåÇÒ ¹è¿À» ÃʱâÈ
# °»½ÅÇÒ ·¹ÄÚµåÀÇ Çʵå¿Í °ªÀ» ¼³Á¤
# ÁÖÀÇ: Çʵå¸íÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÔ
$record["firstname"] = "Caroline";
$record["LasTnAme"] = "Smith"; # CarolineÀÇ ¼ºÀ» Miranda¿¡¼ Smith·Î °»½Å
# ÇϳªÀÇ ·¹ÄÚµå¼Â°ú °»½ÅÇÒ µ¥ÀÌŸ¸¦ Æ÷ÇÔÇÏ´Â ¹è¿À» GetUpdateSQL ÇÔ¼ö¿¡ Àü´Þ
# ÀÌ ÇÔ¼ö´Â µ¥ÀÌŸ¸¦ ó¸®ÇÏ°í ¿ÏÀüÈ÷ Çü½ÄÈµÈ UPDATE SQL ¹®À» ¸®ÅÏÇÔ
# ¿Ã¹Ù¸¥ WHERE ¹® ¿ª½Ã Æ÷ÇÔµÊ
# Å×ÀÌŸ°¡ °»½ÅµÇÁö¾Ê´Â °æ¿ì ¾î¶°ÇÑ ·¹ÄÚµå¼Âµµ ¸®ÅϵÇÁö¾ÊÀ½
$updateSQL = $conn->GetUpdateSQL($rs, $record);
$conn->Execute($updateSQL); # DBÀÇ ·¹Äڵ带 °»½Å
$conn->Close();
?>
´ÙÀ½Àº ¾ÆÁÖ °£´ÜÇÑ ·¹ÄÚµå¼Â ÆäÀÌÁö À̵¿±â¸¦ ¸¸µç´Ù. µû¶ó¼ ·¹ÄÚµå¼ÂÀ» ÆäÀÌÁö ´ÜÀ§·Î À̵¿½Ãų ¼ö ÀÖ´Ù.
include_once('../adodb.inc.php');
include_once('../adodb-pager.inc.php');
session_start();
$db = NewADOConnection('mysql');
$db->Connect('localhost','root','','xphplens');
$sql = "select * from adoxyz ";
$pager = new ADODB_Pager($db,$sql);
$pager->Render($rows_per_page=5);
ÀÌ ÇÔ¼ö´Â ´ÙÀ½ ǥó·³ ±âº» ·¹ÄÚµå ÆäÀÌÀú¸¦ »ý¼ºÇÑ´Ù:
|< <<
>> >|
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||
| Page 8/10 |
Çѹø¿¡ Ãâ·ÂÇÒ ÇàÀÇ ¼ö´Â Render($rows) ¸Þ¼Òµå¿¡ÀÇÇØ º¯°æÇÒ ¼ö ÀÖ´Ù. ¸¸¾à Render()¿¡ ÀÎÀÚ¸¦ Àü´ÞÇÏÁö ¾Ê´Â °æ¿ì ADODB_Pager´Â ±âº»°ªÀÎ ÆäÀÌÁö´ç 10 ÇàÀ¸·Î ¼³Á¤µÈ´Ù.
Çʵå¸íÀº SQLÀ» º¯°æÇÔÀ¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù(´ëºÎºÐÀÇ DB¿¡¼ Áö¿ø):
$sql = 'select id as "ID", firstname as "First Name", lastname as "Last Name", created as "Date Created"
from adoxyz';
À§ÀÇ ÄÚµå´Â ÀÌ ¹èÆ÷º»¿¡ Æ÷ÇÔµÈ adodb/tests/testpaging.php¿Í adodb/adodb-pager.inc.php¿¡¼ ãÀ» ¼ö ÀÖ´Ù. ADODB_Pager´Â ÇÁ·Î±×·¡¸Ó¿¡ÀÇÇØ º¯°æµÉ ¼ö ÀÖ´Ù. µû¶ó¼ ÅØ½ºÆ® ¸µÅ©´Â À̹ÌÁö·Î º¯°æÇÒ ¼ö ÀÖÀ¸¸ç, ¹è°æ»ö ¿ª½Ã ¿øÇÏ´Â »ö»óÀ¸·Î º¯°æÇÒ ¼ö ÀÖ´Ù.
$pager->htmlSpecialChars = false¸¦ ¼³Á¤ÇÔÀ¸·Î¼ HTMLµµ Ãâ·ÂÇÒ ¼ö ÀÖ´Ù.
¿©±â¼ »ç¿ëµÈ ¸î¸î ÄÚµå´Â Iván Oliva°ú Cornel G ´öÅÃÀÌ´Ù.
ADOdb´Â CSV(Comma-Separated-Value)¿Í ÅÇ ±¸ºÐ Çü½ÄÀ¸·Î Ãâ·ÂÇÒ ¼ö ÀÖ´Â º¸Á¶ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.:
include_once('/path/to/adodb/toexport.inc.php');
include_once('/path/to/adodb/adodb.inc.php');
$db = &NewADOConnection('mysql');
$db->Connect($server, $userid, $password, $database);
$rs = $db->Execute('select fname as "First Name", surname as "Surname" from table');
print "<pre>";
print rs2csv($rs); # CSV Çü½ÄÀÇ ¹®ÀÚ¿ ¸®ÅÏ
print '<hr>';
$rs->MoveFirst(); # ÁÖÀÇ: ¸î¸î DB´Â MoveFirst¸¦ Áö¿øÇÏÁö ¾ÊÀ½
print rs2tab($rs,false); # ÅÇ ±¸ºÐ Çü½ÄÀÇ ¹®ÀÚ¿ ¸®ÅÏ
# false·Î ¼³Á¤Çϸé ùÇàÀÇ Çʵå¸íÀ» Ãâ·ÂÇÏÁö ¾ÊÀ½
print '<hr>';
$rs->MoveFirst();
rs2tabout($rs); # Ç¥ÁØ Ãâ·ÂÀ¸·Î Á÷Á¢ Ãâ·ÂÇÔ(rs2csvout ÇÔ¼öµµ ÀÖÀ½)
print "</pre>";
$rs->MoveFirst();
$fp = fopen($path, "w");
if ($fp) {
rs2csvfile($rs, $fp); # ÆÄÀÏ·Î ÀúÀå(rs2tabfile ÇÔ¼öµµ ÀÖÀ½)
fclose($fp);
}
ij¸®Áö ¸®Åϰú °³ÇàÀº °ø¹éÀ¸·Î º¯È¯µÈ´Ù. Çʵå¸íÀº ùÇà¿¡ Ãâ·ÂµÈ´Ù. ÇÊµå ±¸ºÐÀÚ¸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿À» Å«µû¿ÈÇ¥·Î ÀοëµÈ´Ù. Å« µû¿ÈÇ¥´Â Å«µû¿ÈÇ¥·Î ´Ù½Ã ÀοëµÈ´Ù. ÀÌ·¯ÇÑ ±â´É¶§¹®¿¡ ¿¢¼¿·Î °¡Á®¿À±â/³»º¸³»±â¸¦ ¾ÈÀüÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù.
À§ÀÇ ¸ðµç ÇÔ¼ö¿¡¼ ¸¶Áö¸· ¸Å°³º¯¼ö, $addtitles´Â ¿É¼ÇÀÌ´Ù. $addtitles´Â ±âº»ÀûÀ¸·Î ÂüÀ¸·Î ¼³Á¤µÈ´Ù. °ÅÁþÀ¸·Î ¼³Á¤µÇ¸é ùÇà¿¡ Çʵå¸íÀ» Ãâ·ÂÇÏÁö¾Ê´Â´Ù.
¶§¶§·Î ·¹ÄÚµå¼ÂÀ» »ç¿ëÇϱâÀü¿¡ ·¹ÄÚµå¼ÂÀÇ ¸ðµç ÇàÀ» ¹Ì¸® ó¸®ÇÒ Çʿ䰡 ÀÖ´Ù. ¿¹¸¦µé¾î ·¹ÄÚµå¼ÂÀÇ ¸ðµç ¹®ÀÚ¿¿¡´ëÇØ ucwords¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
include_once('adodb/rsfilter.inc.php');
include_once('adodb/adodb.inc.php');
// ·¹ÄÚµå¼ÂÀÇ ¸ðµç Ç׸ñ¿¡´ëÇØ ucwords()¸¦ È£Ãâ
function do_ucwords(&$arr,$rs)
{
foreach($arr as $k => $v) {
$arr[$k] = ucwords($v);
}
}
$db = NewADOConnection('mysql');
$db->PConnect('server','user','pwd','db');
$rs = $db->Execute('select ... from table');
$rs = RSFilter($rs,'do_ucwords');
RSFilter ÇÔ¼ö´Â ¸Å°³º¯¼ö·Î ·¹ÄÚµå¼Â°ú ÇÊÅÍ ÇÔ¼öÀÇ À̸§À» ÃëÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ·¹ÄÚµå¼ÂÀ» ÇÊÅÍÇÔ¼ö·Î ó¸®ÇÑ ÈÄ, ùÇàÀ¸·Î À̵¿µÈ ·¹ÄÚµå¼ÂÀ» ¸®ÅÏÇÑ´Ù. ÇÊÅÍ ÇÔ¼ö´Â ¸Å°³º¯¼ö·Î ÇöÀç ÇàÀ» Áö½ÃÇÏ´Â ¹è¿°ú ·¹ÄÚµå¼Â °³Ã¼¸¦ ÃëÇÑ´Ù. ȣȯ¼ºÀ» À§ÇØ ¿ø·¡ÀÇ ·¹ÄÚµå¼Â °³Ã¼¸¦ »ç¿ëÇÏÁö¾Ê´Â °ÍÀÌ ÁÁ´Ù.
$conn->BeginTrans(); $ok = $conn->Execute($sql); if ($ok) $ok = $conn->Execute($sql2); if (!$ok) $conn->RollbackTrans(); else $conn->CommitTrans();ÀÌ °ÍÀº ´ëÇü ÇÁ·ÎÁ§Æ®ÀÇ °æ¿ì ¾ÆÁÖ º¹ÀâÇÏ´Ù. ¿Ö³ÄÇÏ¸é ¿À·ù »óŸ¦ °è¼Ó ÃßÀûÇØ¾ß Çϱ⶧¹®ÀÌ´Ù. Áö´ÉÀû Æ®·£Àè¼ÇÀº ÈξÀ °£´ÜÇÏ´Ù. StartTrans()¸¦ È£ÃâÇÔÀ¸·Î¼ Æ®·£Àè¼ÇÀ» ½ÃÀÛÇÑ´Ù:
$conn->StartTrans(); $conn->Execute($sql); $conn->Execute($Sql2); $conn->CompleteTrans();CompleteTrans()Àº SQL ¿À·ùÀÇ ¹ß»ý ¿©ºÎ¸¦ °ËÃâÇÏ°í ¿À·ù ¹ß»ý ¿©ºÎ¿¡µû¶ó Àû´çÈ÷ ·Ñ¹é/Ä¿¹ÔÇÑ´Ù. ¿À·ù°¡ ¹ß»ýÇÏÁö¾Ê¾Æµµ °Á¦·Î ·Ñ¹éÇÏ·Á¸é FailTrans()¸¦ »ç¿ëÇÑ´Ù. ÁÖÀÇ: ·Ñ¹éÀº FailTrans()¿¡¼°¡ ¾Æ´Ï¶ó CompleteTrans()¿¡¼ ¼öÇàµÈ´Ù.
$conn->StartTrans(); $conn->Execute($sql); if (!CheckRecords()) $conn->FailTrans(); $conn->Execute($Sql2); $conn->CompleteTrans();
HasFailedTrans()¸¦ »ç¿ëÇØ¼ Æ®·¢Àè¼ÇÀÇ ½ÇÆÐ¿©ºÎ¸¦ °Ë»çÇÒ ¼ö ÀÖ´Ù. HasFailedTrans()Àº FailTrans()°¡ È£ÃâµÈ °æ¿ì³ª SQL ½ÇÇà¿¡ ¿À·ù°¡ ÀÖ´Â °æ¿ì ÂüÀ» ¸®ÅÏÇÑ´Ù.
¸¶Áö¸·À¸·Î StartTrans/CompleteTrans´Â ÁßøµÉ ¼ö ÀÖÁö¸¸ Ãֿܰû ºí·°¸¸ ½ÇÇàµÈ´Ù. ¹Ý´ë·Î BeginTrans/CommitTrans/RollbackTrans´Â ÁßøµÉ ¼ö ¾ø´Ù.
$conn->StartTrans(); $conn->Execute($sql); $conn->StartTrans(); # ¹«½Ã if (!CheckRecords()) $conn->FailTrans(); $conn->CompleteTrans(); # ¹«½Ã $conn->Execute($Sql2); $conn->CompleteTrans();
ÁÖÀÇ: Savepoints´Â ÇöÀç Áö¿øµÇÁö ¾Ê´Â´Ù.
ADOdb´Â ÇÊ¿ä½Ã º¯°æÇÒ ¼ö ÀÖ´Â µÎ°³ÀÇ »ç¿ëÀÚ ¿À·ù 󸮱⸦ Á¦°øÇÑ´Ù. ù¹øÂ° ¿À·ù 󸮱â´Â adodb-errorhandler.inc.php¿¡ Á¸ÀçÇÑ´Ù. ÀÌ ¿À·ù󸮱â´Â Ãâ·ÂµÉ ¿À·ù ¸Þ½ÃÁö À¯ÇüÀ» Á¦¾îÇϱâÀ§ÇØ Ç¥ÁØ PHP ÇÔ¼ö, error_reporting¸¦ »ç¿ëÇϸç, PHPÀÇ ±âº» ¿À·ù 󸮱⸦ È£ÃâÇÏ´Â trigger_error¸¦ »ç¿ëÇÑ´Ù.
À§ÀÇ ÆÄÀÏÀ» IncludeÇÏ¸é ´ÙÀ½°ú °°Àº »óȲ¿¡¼ trigger_error($errorstring,E_USER_ERROR)°¡ È£ÃâµÈ´Ù.
(a) Connect() ¶Ç´Â PConnect() ½ÇÆÐÇÒ ¶§
(b) Execute() ³ª SelectLimit()¿Í °°ÀÌ SQL ¹®À» ½ÇÇàÇÏ´Â ÇÔ¼ö°¡ ¿À·ù¸¦ ¹ß»ýÇÒ ¶§.
(c) GenID()°¡ ¹«ÇÑ ·çÇÁ¸¦ µ¹¶§.
$errorstringÀº ADOdb¿¡ÀÇÇØ »ý¼ºµÇ¸ç, ¾Æ·¡¿¡ »ý¼ºµÈ error.log µ¥ÀÌŸ¿Í ºñ½ÁÇÑ Á¤º¸¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù. adodb-errorhandler.inc.php ÆÄÀÏÀº ADOConnection °³Ã¼¸¦ »ý¼ºÇϱâ Àü¿¡ Include ¹®À» ÀÌ¿ëÇØ¼ Æ÷ÇÔ½ÃÄÑ¾ß ÇÑ´Ù.
¸¸¾à error_reporting(0)¸¦ Á¤ÀÇÇÏ¸é ¾î¶°ÇÑ ¿À·ùµµ ¿À·ù 󸮱â·Î Àü´ÞµÇÁö¾Ê´Â´Ù. error_reporting(E_ALL)À» ¼³Á¤ÇÏ¸é ¸ðµç ¿À·ù°¡ ¿À·ù 󸮱â·Î Àü´ÞµÈ´Ù. ¿À·ùÀÇ Ãâ·ÂÀ» Á¦¾îÇϱâÀ§ÇØ ini_set("display_errors", "0" ¶Ç´Â "1")¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ´Ù.
<?php
error_reporting(E_ALL); # Æ®¸®°ÅµÈ ¸ðµç ¿À·ù¸¦ ¿À·ù 󸮱⿡ Àü´Þ
include('adodb-errorhandler.inc.php');
include('adodb.inc.php');
include('tohtml.inc.php');
$c = NewADOConnection('mysql');
$c->PConnect('localhost','root','','northwind');
$rs=$c->Execute('select * from productsz'); #productsz Å×À̺í À̸§ÀÌ À߸øµÊ
if ($rs) $rs2html($rs);
?>
¿À·ù ¸Þ½ÃÁö¸¦ ÆÄÀÏ¿¡ ±â·Ï, ÃßÀûÇÏ±æ ¿øÇÑ´Ù¸é ADODB_ERROR_LOG_TYPE°ú ADODB_ERROR_LOG_DEST »ó¼ö¸¦ Á¤ÀÇÇÔÀ¸·Î¼ ¿À·ù ¸Þ½ÃÁö¸¦ ±â·Ï, ÃßÀûÇÒ ¼ö ÀÖ´Ù. ADODB_ERROR_LOG_TYPEÀº ¿À·ù ¸Þ½ÃÁö ±â·Ï À¯Çü(PHP ¸Å´º¾óÀÇ error_log¸¦ º¸±â ¹Ù¶õ´Ù)À» ³ªÅ¸³½´Ù. ´ÙÀ½ ¿¹¿¡¼´Â 3À¸·Î ¼³Á¤ÇßÀ¸¸ç, ÀÌ °ÍÀº ADODB_ERROR_LOG_DEST »ó¼ö¿¡ÀÇÇØ Á¤ÀÇµÈ ÆÄÀÏ·Î ±â·ÏÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù.
<?php
error_reporting(E_ALL); # ¸ðµç ¿À·ù¸¦ º¸°í
ini_set("display_errors", "0"); # ¿À·ù¸¦ ȸ鿡 Ãâ·ÂÇÏÁö ¾ÊÀ½
define('ADODB_ERROR_LOG_TYPE',3);
define('ADODB_ERROR_LOG_DEST','C:/errors.log');
include('adodb-errorhandler.inc.php');
include('adodb.inc.php');
include('tohtml.inc.php');
$c = NewADOConnection('mysql');
$c->PConnect('localhost','root','','northwind');
$rs=$c->Execute('select * from productsz'); ## productsz Å×À̺í À̸§ÀÌ À߸øµÊ
if ($rs) $rs2html($rs);
?>
´ÙÀ½ ¸Þ½ÃÁö°¡ error.log ÆÄÀÏ¿¡ ±â·ÏµÉ °ÍÀÌ´Ù.
(2001-10-28 14:20:38) mysql error: [1146: Table 'northwind.productsz' doesn't exist] in
EXECUTE("select * from productsz")
µÎ¹øÂ° ¿À·ù 󸮱â´Â adodb-errorpear.inc.php ÆÄÀÏ¿¡ Á¸ÀçÇÑ´Ù. ÀÌ °ÍÀº ¿À·ù¸¦ ¹ß»ýÇÑ °³Ã¼·ÎºÎÅÍ À¯µµµÈ PEAR_Error¸¦ »ý¼ºÇÑ´Ù. »ý¼ºµÈ ¸¶Áö¸· PEAR_Error °³Ã¼´Â ADODB_Pear_Error()¸¦ »ç¿ëÇØ¼ º¹¿øÇÒ ¼ö ÀÖ´Ù.
<?php
include('adodb-errorpear.inc.php');
include('adodb.inc.php');
include('tohtml.inc.php');
$c = NewADOConnection('mysql');
$c->PConnect('localhost','root','','northwind');
$rs=$c->Execute('select * from productsz'); #productsz Å×À̺í À̸§ÀÌ À߸øµÊ;
if ($rs) $rs2html($rs);
else {
$e = ADODB_Pear_Error();
echo '<p>',$e->message,'</p>';
}
?>
adodb-errorpear.inc.php ÆÄÀÏÀ» Include ÇϱâÀü¿¡ »ó¼ö ADODB_PEAR_ERROR_CLASS¸¦ Á¤ÀÇÇÔÀ¸·Î¼ Å©·¡½º·ÎºÎÅÍ ¹ß»ýÇÑ PEAR_Error¸¦ ÃßÀûÇÒ ¼ö ÀÖ´Ù. ½±°Ô µð¹ö±ëÇϱâ À§ÇØ PHP ½ºÅ©¸³Æ®ÀÇ ½ÃÀÛ ºÎºÐ¿¡ ±âº» ¿À·ù 󸮱⸦ PEAR_ERROR_DIE·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. PEAR_ERROR_DIE¸¦ »ç¿ëÇÔÀ¸·Î¼ ¿À·ù ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϰí, ½ºÅ©¸³Æ®ÀÇ ½ÇÇàÀ» ÁßÁöÇÒ ¼ö ÀÖ´Ù:
include('PEAR.php');
PEAR::setErrorHandling('PEAR_ERROR_DIE');
¿À·ù°¡ ¹ß»ýÇÒ ¶§ PEAR_Error °³Ã¼°¡ ¸í½ÃÀûÀ¸·Î ¸®ÅϵÇÁö¾Ê´Â´Ù´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. ´ë½Å¿¡ °ÅÁþÀÌ ¸®ÅϵǸç, ¸¶Áö¸· ¿À·ù¸¦ ¾ò±âÀ§Çؼ´Â ADODB_Pear_Error()¸¦ È£ÃâÇϰųª PEAR_ERROR_DIE ±â¹ýÀ» »ç¿ëÇØ¾ß ÇÑ´Ù.
¿À·ù ¸Þ½ÃÁö´Â Á¤Àû ¸Þ¼Òµå, ADOConnnection::outp($msg,$newline=true)¸¦ »ç¿ëÇØ¼ Ãâ·ÂµÈ´Ù. ±âº»ÀûÀ¸·Î ÀÌ ¸Þ¼Òµå´Â ¸Þ½ÃÁö¸¦ Ŭ¶óÀÌ¾ðÆ®·Î Àü¼ÛÇÑ´Ù. ±×·¯³ª ÇÊ¿äÇÑ °æ¿ì ¿À·ù ±â·ÏÇÒ ¼ö ÀÖ´Ù.
PEAR Çü½ÄÀÇ DSN¸¦ »ç¿ëÇÑ Á¢¼ÓÀ» Áö¿øÇÑ´Ù. À̶§ DSNÀº ´ÙÀ½°ú °°Àº Çü½ÄÀÇ Á¢¼Ó ¹®ÀÚ¿ÀÌ µÈ´Ù:
$dsn = "$driver://$username:$password@$hostname/$databasename";
DNSÀ» Á¤Àû Å©·¡½º ÇÔ¼ö DB::Connect¿¡ Àü´ÞÇÑ´Ù. ¿¹:
include_once('../adodb/adodb-pear.inc.php');
$username = 'root';
$password = '';
$hostname = 'localhost';
$databasename = 'xphplens';
$driver = 'mysql';
$dsn = "$driver://$username:$password@$hostname/$databasename";
$db = DB::Connect($dsn);
$rs = $db->Execute('select firstname,lastname from adoxyz'); $cnt = 0; while ($arr = $rs->FetchRow()) { print_r($arr); print "<br>"; }
ÀÌ °ÍÀº PEAR°¡ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß Çϸç php.iniÀÇ ±âº» Include °æ·Î¿¡ ¼³Ä¡µÈ PEAR°¡ Æ÷ÇԵǾî ÀÖ¾î¾ß ÇÑ´Ù.
ADOdb´Â CacheExecute( ), CachePageExecute( )¿Í CacheSelectLimit( )¸¦ »ç¿ëÇØ¼ ·¹ÄÚµå¼ÂÀÇ Ä³½¬¸¦ Áö¿øÇÑ´Ù. ÀÌ °ÍÀº ij½¬µÇÁö¾Ê´Â ÇÔ¼ö¿Í À¯»çÇÏÁö¸¸ »õ·Î¿î ¸Å°³º¯¼ö, $secs2cache¸¦ ÃëÇÑ´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù.
¿¹:
include('adodb.inc.php'); # ADOdbÀÇ °øÅë ÄÚµå Àбâ
$ADODB_CACHE_DIR = '/usr/ADODB_cache';
$conn = &ADONewConnection('mysql'); # Á¢¼Ó »ý¼º
$conn->PConnect('localhost','userid','','agora');# MySQL, agora DB¿¡ ¿¬°á
$sql = 'select CustomerName, CustomerID from customers';
$rs = $conn->CacheExecute(15,$sql);
ù¹øÂ° ¸Å°³º¯¼ö´Â Äõ¸®¸¦ ij½¬ÇÒ ½Ã°£À¸·Î ´ÜÀ§´Â ÃÊÀÌ´Ù. ÀÌ Äõ¸®¸¦ ¿¬¼ÓÇØ¼ È£ÃâÇϸé $ADODB_CACHE_DIR¿¡ ÀúÀåµÈ ·¹ÄÚµå¼Â(ij½¬µÈ)ÀÌ »ç¿ëµÈ´Ù. °Á¦·Î ij½¬¸¦ ºñ¿ì°í Äõ¸®¸¦ ½ÇÇàÇϱâÀ§ÇØ CacheExecute()ÀÇ Ã¹¹øÂ° ¸Å°³º¯¼ö¸¦ 0À¸·Î ¼³Á¤Çϰí È£ÃâÇÒ ¼ö ÀÖ´Ù. ¶Ç ´Ù¸¥ ¹æ¹ýÀ¸·Î CacheFlush($sql)¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
$ADODB_CACHE_DIR¸¦ »ç¿ëÇÏ´Â °æ¿ì º¸¾ÈÀ» À§ÇØ php.iniÀÇ register_globals=off¸¦ ¼³Á¤ÇÒ °ÍÀ» ±Ç°íÇÑ´Ù.
ADOdb 1.80 ÀÌ»óÀÇ °æ¿ì CacheSelectLimit()¿Í CacheExecute()¿¡¼ secs2cache ¸Å°³º¯¼ö´Â ¿É¼ÇÀÌ´Ù. ¸¸¾à ÀÌ °ªÀ» ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é $connection->cacheSecs ¸Å°³º¯¼ö¸¦ »ç¿ëÇÑ´Ù(±âº»°ªÀº 60ºÐÀÌ´Ù).
$conn->Connect(...);
$conn->cacheSecs = 3600*24; # 24½Ã°£µ¿¾È ij½¬
$rs = $conn->CacheExecute('select * from table');
magic_quotes_runtimeÀÌ off À̾î¾ß ÇÑ´Ù´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. ÀÚ¼¼È÷.
Çǹþ Å×À̺í
ADOdb 2.30 ÀÌ»óÀº ±³Â÷ Å×À̺í·Î ¾Ë·ÁÁø Çǹþ Å×À̺íÀ» »ý¼ºÇÏ´Â SQL ¹®À» »ý¼ºÇÒ ¼ö ÀÖ´Ù. º¸´Ù ÀÚ¼¼ÇÑ ¼³¸íÀº DevShedÀÇ ±³Â÷ Å×ÀÌºí ±æÀâÀ̸¦ Àб⠹ٶõ´Ù. µ¥ÀÌŸ º£À̽º°¡ CASE-WHEN ¹®À» Áö¿øÇÏ´Â °ÍÀ¸·Î °¡Á¤Çß´Ù.
ÀÌ ¿¹¿¡¼ MicrosoftÀÇ Northwind DB¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù. ÀÌ DB´Â Á¦Ç° Å×À̺íÀ» °¡Áö°í ÀÖ°í ÀÌ Å×À̺íÀ» °ø±ÞÀÚ´ë Á¦Ç° ºÐ·ù·Î ºÐ¼®ÇÏ±æ ¿øÇÑ´Ù°í ÇÏÀÚ. °¢Çà¿¡ °ø±ÞÀÚ¸¦ µÎ°í ºÐ·ù»ó¿¡ ÇǹþÀ» µÎ´Â °ÍÀ¸·Î ÇϰڴÙ. µû¶ó¼ ÁÂÃøÀÇ Å×À̺í·ÎºÎÅÍ ¿ìÃøÀÇ Çǹþ Å×À̺í·Î »ý¼ºµÈ´Ù:
|
--> |
|
´ÙÀ½ ÄÚµå´Â ±³Â÷ Å×À̺íÀ» »ý¼ºÇϴµ¥ »ç¿ëµÉ SQLÀ» »ý¼ºÇÒ °ÍÀÌ´Ù:
# ¸ÞÀÏ "products" Å×ÀÌºí¿¡ ÁúÀÇ # ÇàÀ» CompanyNameÀ¸·Î ¼³Á¤ # Ä÷³À» CategoriesÀÇ °ªÀ¸·Î ¼³Á¤ # "categories"°ú "suppliers"¸¦ Á¶È¸ÇϱâÀ§ÇÏ ¸µÅ©¿¡´ëÇÑ JoinÀ» Á¤ÀÇ # include "adodb/pivottable.php"; $sql = PivotTableSQL( $gDB, # adodb Á¢¼Ó 'products p ,categories c ,suppliers s', # Å×À̺í 'CompanyName', # Çà(´ÙÁß Çʵ嵵 Çã¿ëµÊ) 'CategoryName', # ÇǹþÇÒ Ä÷³ 'p.CategoryID = c.CategoryID and s.SupplierID= p.SupplierID' # joins/where );
ÀÌ °ÍÀº ´ÙÀ½°ú °°Àº SQLÀ» »ý¼ºÇÏ°Ô µÈ´Ù:
SELECT CompanyName,
SUM(CASE WHEN CategoryName='Beverages' THEN 1 ELSE 0 END) AS "Beverages",
SUM(CASE WHEN CategoryName='Condiments' THEN 1 ELSE 0 END) AS "Condiments",
SUM(CASE WHEN CategoryName='Confections' THEN 1 ELSE 0 END) AS "Confections",
SUM(CASE WHEN CategoryName='Dairy Products' THEN 1 ELSE 0 END) AS "Dairy
Products",
SUM(CASE WHEN CategoryName='Grains/Cereals' THEN 1 ELSE 0 END) AS "Grains/Cereals",
SUM(CASE WHEN CategoryName='Meat/Poultry' THEN 1 ELSE 0 END) AS "Meat/Poultry",
SUM(CASE WHEN CategoryName='Produce' THEN 1 ELSE 0 END) AS "Produce",
SUM(CASE WHEN CategoryName='Seafood' THEN 1 ELSE 0 END) AS "Seafood",
SUM(1) as Total
FROM products p ,categories c ,suppliers s WHERE p.CategoryID = c.CategoryID
and s.SupplierID= p.SupplierID
GROUP BY CompanyName
¹üÀ§¸¦ »ç¿ëÇÔÀ¸·Î¼ ¼ýÀÚ Ä÷³°ú Çհ踦 ÇǹþÇÒ ¼ö ÀÖ´Ù. ÀÌ ÄÚµå´Â ADOdb 2.41¿¡¼ °³¹ßµÇ¾úÀ¸¸ç ÇÏÀ§È£È¯¼ºÀº ¾ø´Ù. µÎ¹øÂ° ¿¹´Â ´ÙÀ½°ú °°´Ù:
$sql = PivotTableSQL( $gDB, # adodb Á¢¼Ó 'products p ,categories c ,suppliers s', # Å×À̺í 'CompanyName', # Çà(´ÙÁß Çʵ嵵 Çã¿ëµÊ) array( # ÄÄ·³ ¹üÀ§ ' 0 ' => 'UnitsInStock <= 0', "1 to 5" => '0 < UnitsInStock and UnitsInStock <= 5', "6 to 10" => '5 < UnitsInStock and UnitsInStock <= 10', "11 to 15" => '10 < UnitsInStock and UnitsInStock <= 15', "16+" => '15 < UnitsInStock' ), ' p.CategoryID = c.CategoryID and s.SupplierID= p.SupplierID', # joins/where 'UnitsInStock', # Çʵå ÇÕ 'Sum ' # ÇÕ°è ¶óº§ÀÇ Á¢µÎ¾î );
ÀÌ °ÍÀº ´ÙÀ½°ú °°Àº SQLÀ» »ý¼ºÇÑ´Ù:
SELECT CompanyName,
SUM(CASE WHEN UnitsInStock <= 0 THEN UnitsInStock ELSE 0 END) AS "Sum
0 ",
SUM(CASE WHEN 0 < UnitsInStock and UnitsInStock <= 5 THEN UnitsInStock
ELSE 0 END) AS "Sum 1 to 5",
SUM(CASE WHEN 5 < UnitsInStock and UnitsInStock <= 10 THEN UnitsInStock
ELSE 0 END) AS "Sum 6 to 10",
SUM(CASE WHEN 10 < UnitsInStock and UnitsInStock <= 15 THEN UnitsInStock
ELSE 0 END) AS "Sum 11 to 15",
SUM(CASE WHEN 15 < UnitsInStock THEN UnitsInStock ELSE 0 END) AS "Sum
16+",
SUM(UnitsInStock) AS "Sum UnitsInStock",
SUM(1) as Total,
FROM products p ,categories c ,suppliers s WHERE p.CategoryID = c.CategoryID
and s.SupplierID= p.SupplierID
GROUP BY CompanyName
[ ]·Î Ç¥½ÃµÈ ¸Å°³º¯¼ö´Â ¿É¼ÇÀÌ´Ù.
µ¥ÀÌŸº£À̽º µå¶óÀ̹ö API°¡ ¸®ÅϵǴ ·¹ÄÚµåÀÇ ¼ö(SELECT ¹®)¸¦ °è»êÇÏ´Â ±â´ÉÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù¸é RecordCount() ÇÔ¼ö´Â Àü¿ªº¯¼ö $ADODB_COUNTRECS°¡ ÂüÀ¸·Î ¼³Á¤(±âº»°ª)µÇ¾úÀ» ¶§ ¿¡¹Ä·¹À̼ÇÀ» ¼öÇàÇÑ´Ù. ¿¡¹Ä·¹À̼ÇÀº ·¹Äڵ带 ¹öÆã¸µÇÔÀ¸·Î¼ ¼öÇàµÈ´Ù. µû¶ó¼ ·¹ÄÚµå¼ÂÀÌ Å« °æ¿ì ¸¹Àº ¾çÀÇ ¸Þ¸ð¸®°¡ »ç¿ëµÉ ¼ö ÀÖ´Ù. ÃÖÀûÀÇ ¼º´ÉÀ» À§ÇØ ÀÌ º¯¼ö¸¦ °ÅÁþÀ¸·Î ¼³Á¤Çϱ⠹ٶõ´Ù. ÀÌ º¯¼ö´Â ÁúÀǰ¡ ¼öÇàµÉ ¶§ ¸¶´Ù °Ë»çµÈ´Ù. µû¶ó¼ ·¹ÄÚ¼ÂÀÇ Ä«¿îÆ®¸¦ ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
·¹ÄÚµå¼Â ij½¬¸¦ »ç¿ëÇÑ´Ù¸é, ÀÌ °ªÀº ·¹ÄÚµå¼ÂÀÌ ÀúÀåµÉ µð·ºÅ丮ÀÌ´Ù. ÀÌ Æ¯Â¡À» »ç¿ëÇÑ´Ù¸é º¸¾È»ó php.ini¿¡¼ register_globals=off·Î ¼³Á¤ÇÒ °ÍÀ» ±Ç°íÇÑ´Ù.
Unix¿Í ¾ÆÆÄÄ¡¸¦ »ç¿ëÇÑ´Ù¸é ´ÙÀ½Ã³·³ ij½¬ µð·ºÅ丮ÀÇ ±ÇÇÑÀ» ¸ðµç »ç¶÷ÀÌ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï º¯°æÇÒ Çʿ䰡 ÀÖ´Ù:
chown -R apache /path/to/adodb/cache
chgrp -R apache /path/to/adodb/cache
¿Ã¹Ù¸¥ trim CHAR Çʵå(ibase/firebirdÀÇ °æ¿ì VARCHAR)¸¦ °áÁ¤ÇÑ´Ù. trim½Ã ÂüÀ¸·Î ¼³Á¤ÇÑ´Ù. ±âº»°ªÀº °ÅÁþÀÌ´Ù. ÇöÀç oci8pro, ibase¿Í firebird µå¶óÀ̹ö¿¡¼ µ¿ÀÛÇÑ´Ù. ADOdb 4.01¿¡¼ Ãß°¡ µÇ¾ú´Ù.
MetaErrorMsg()¿¡¼ »ç¿ëµÇ´Â ¾ð¾î¸¦ °áÁ¤ÇÑ´Ù. ±âº»°ªÀº 'en(¿µ¾î)'ÀÌ´Ù. Áö¿øµÇ´Â ¾ð¾î¸¦ ¾Ë±âÀ§Çؼ´Â adodb/lang/adodb-$lang.inc.php ÆÄÀÏÀ» ã¾Æº¸±â ¹Ù¶õ´Ù. ¿©±â¼ $lang´Â Áö¿øµÇ´Â ¾ð¾îÀÌ´Ù.
ÀÌ °ªÀº ·¹ÄÚµå¼ÂÀ» ¾î¶² Á¾·ùÀÇ ¹è¿À» »ç¿ëÇØ¼ º¹¿øÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÏ´Â Àü¿ªº¯¼öÀÌ´Ù. ·¹ÄÚµå¼ÂÀº »ý¼º(¿¹. Execute( ) ¶Ç´Â SelectLimit( ))½Ã ÀÌ °ª¿¡µû¶ó ÀúÀåµÈ´Ù. ÀÌ¾î¼ $ADODB_FETCH_MODE¸¦ º¯°æÇصµ ±âÁ¸ÀÇ ·¹ÄÚµå¼Â¿¡´Â ¿µÇâÀ» ÁÖÁö¸øÇϸç, ¿À·ÎÁö »õ·Î »ý¼ºµÈ ·¹ÄÚµå¼Â¿¡¸¸ ¿µÇâÀ» ¹ÌÄ£´Ù.
´ÙÀ½ »ó¼ö°¡ Á¤ÀǵǾú´Ù:
define('ADODB_FETCH_DEFAULT',0);
define('ADODB_FETCH_NUM',1);
define('ADODB_FETCH_ASSOC',2);
define('ADODB_FETCH_BOTH',3);
¿¹:
$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
$rs1 = $db->Execute('select * from table');
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$rs2 = $db->Execute('select * from table');
print_r($rs1->fields); # array([0]=>'v0',[1] =>'v1')·Î Ãâ·Â
print_r($rs2->fields); # array(['col1']=>'v0',['col2'] =>'v1')·Î Ãâ·Â
À§ÀÇ ¿¹¿¡¼ ¾Ë¼ö ÀÖ´Â °Íó·³ ·¹ÄÚµå¼ÂÀº Execute()¿¡ÀÇÇØ »ý¼ºµÉ ¶§ ¼³Á¤µÈ $ADODB_FETCH_MODE¿¡µû¶ó ¼·Î ´Ù¸¥ ¸ðµå·Î ÀúÀå/»ç¿ëµÉ ¼ö ÀÖ´Ù.
ÆäÄ¡ ¸ðµå°¡ ¹Ì¸® Á¤ÀǵÇÁö ¾ÊÀ¸¸é ÆäÄ¡ ¸ðµå´Â ADODB_FETCH_DEFAULT·Î ¼³Á¤µÈ´Ù. ±âº» ¸ðµåÀÇ µ¿ÀÛÀº µå¶óÀ̹ö¿¡µû¶ó ´Ù¸£¸ç ADODB_FETCH_DEFAULT¿¡ ÀÇÁ¸ÇÏÁö ¾Ê´Â´Ù. ½ºÅ©¸³Æ® ȣȯ¼ºÀ» À§ÇØ ADODB_FETCH_NUMÀ̳ª ADODB_FETCH_ASSOC¸¦ °í¼öÇÒ °ÍÀ» ±Ç°íÇÑ´Ù. ¸¹Àº µå¶óÀ̹ö´Â ADODB_FETCH_BOTH¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù.
SetFetchMode ÇÔ¼ö
¸î¸î ÇÁ·Î±×·¡¸Ó´Â º¸´Ù °³Ã¼ ÁöÇâÀûÀÎ ¹æ¹ýÀ» »ç¿ëÇϱæ ÁÁ¾ÆÇÑ´Ù. ÆäÄ¡ ¸ðµå ¿ª½Ã °³Ã¼ ÇÔ¼ö, SetFetchMode¿¡ÀÇÇØ ¼³Á¤µÉ ¼ö ÀÖ´Ù. ÀÏ´Ü ÀÌ ÇÔ¼ö°¡ Á¢¼Ó °³Ã¼¿¡´ëÇØ È£ÃâµÇ¸é Á¢¼Ó °³Ã¼´Â Àü¿ªº¯¼ö $ADODB_FETCH_MODE¸¦ ¹«½ÃÇÏ°í ³»ºÎÀÇ fetchMode ¼Ó¼ºÀ» ÂüÁ¶ÇϱâµÈ´Ù.
$db->SetFetchMode(ADODB_FETCH_NUM);
$rs1 = $db->Execute('select * from table');
$db->SetFetchMode(ADODB_FETCH_ASSOC);
$rs2 = $db->Execute('select * from table');
print_r($rs1->fields); # array([0]=>'v0',[1] =>'v1')¸¦ Ãâ·Â
print_r($rs2->fields); # array(['col1']=>'v0',['col2'] =>'v1')¸¦ Ãâ·Â
ÀÌÀü ÆÐÄ¡ ¸ðµå¸¦ º¹¿øÇϱâ À§ÇØ $db->fetchMode ¼Ó¼ºÀ» °Ë»çÇϰųª SetFetchMode( )ÀÇ ¸®ÅϰªÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¼·Î ´Ù¸£°Ô µ¿ÀÛÇÏ´Â ÀÓÀÇÀÇ µå¶óÀ̹ö¿¡¼ ¿¬°ü¹è¿ÀÇ ´ë¼Ò¹®ÀÚ¸¦ Á¦¾îÇÒ ¼ö ÀÖ´Ù. sybase, oci8po, mssql, odbc, ibase µå¶óÀ̹ö¿Í À̵é·ÎºÎÅÍ À¯µµµÈ ¸ðµç µå¶óÀ̹ö´Â ±âº»ÀûÀ¸·Î Ű(Çʵå¸í)°¡ ¼Ò¹®ÀÚÀÎ ·¹ÄÚµå¼ÂÀ» »ý¼ºÇÑ´Ù. ADODB_ASSOC_CASE »ó¼ö¸¦ »ç¿ëÇÔÀ¸·Î¼ ÀÌ Å°ÀÇ ´ë¼Ò¹®ÀÚ¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº °¡´ÉÇÑ ¼¼°¡Áö °ªÀÌ´Ù:
0 = ¼Ò¹®ÀÚ Çʵå¸í. $rs->fields['orderid']
1 = ´ë¹®ÀÚ Çʵå¸í. $rs->fields['ORDERID']
2 = DB °íÀ¯ÀÇ Çʵå¸í. $rs->fields['OrderID'] -- ADOdb 2.90 ÀÌÈÄ ÀÌ °ªÀÌ ±âº»ÀÓ
ÀÌ »ó¼ö¸¦ »ç¿ëÇϱâÀ§ÇØ adodb.inc.php¸¦ IncludeÇϱâ Àü¿¡ ¸ÕÀú ¼±¾ðÇØ¾ß ÇÑ´Ù.
define('ADODB_ASSOC_CASE', 2); # ADODB_FETCH_ASSOC¿¡ DB °íÀ¯ÀÇ Çʵå¸í »ç¿ë
include('adodb.inc.php');
µ¥ÀÌŸº£À̽º ¿¬°á, SQL ¹® ½ÇÇà, ¹®ÀÚ¿ ¿¬°á°ú ³¯Â¥ Çü½Äó·³ SQL ¹®À» ÀÏ¹Ý Çü½ÄÀ¸·Î º¯È¯ÇÏ´Â À¯Æ¿¸®Æ¼ ÇÔ¼ö ÁýÇÕÀ» °¡Áø °³Ã¼.
databaseType: ¿¬°áÇÏ·Á´Â DB ½Ã½ºÅÛÀÇ À̸§. ¿¹. odbc, mssql, mysql.
dataProvider: DB Á¢¼Ó¿¡ »ç¿ëµÇ´Â ±âÃÊ ¸ÞÄ«´ÏÁò. º¸Åë native·Î ¼³Á¤µÊ. ¿¹¿Ü: odbc³ª ado
host: ¿¬°áÇÒ ¼¹ö À̸§À̳ª µ¥ÀÌŸ ¼Ò½º¸í(DSN).
database: ¿¬°áÇÒ µ¥ÀÌŸº£À̽ºÀÇ À̸§. ado°¡ »ç¿ëµÇ¸é ado µ¥ÀÌŸ Á¦°øÀÚ¸¦ À¯ÁöÇÑ´Ù.
user: ¿¬°áÇÒ µ¥ÀÌŸº£À̽ºÀÇ ·Î±×ÀÎ ID. ¾ÏÈ£´Â º¸¾È»ó ÀúÀåµÇÁö¾Ê´Â´Ù.
raiseErrorFn: À̰ÍÀ¸·Î ¿À·ù ó¸® ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¿¹´Â adodb-errorhandler.inc.php¸¦ º¸±â¹Ù¶õ´Ù.
debug: µð¹ö±× ¸ðµå¸¦ ¿øÇÏ´Â °æ¿ì true·Î ¼³Á¤ÇÑ´Ù.
concat_operator: º¸Åë '+'³ª '||'·Î ¼³Á¤. SQL¿¡¼ ¹®ÀÚ¸¦ ¿¬°áÇÏ´Â »ç¿ëµÇ´Â ¿¬»êÀÚ. Concat ÇÔ¼ö¿¡ÀÇÇØ »ç¿ëµÊ.
fmtDate: µ¥ÀÌŸº£À̽º¿¡ ³¯Â¥¸¦ Àü¼ÛÇÒ ¶§ DBDate¿¡ÀÇÇØ »ç¿ëµÇ´Â Çü½Ä. Microsoft AccessÀÇ °æ¿ì '#Y-m-d#'À̸ç MysqlÀÇ °æ¿ì ''Y-m-d''ÀÌ´Ù.
fmtTimeStamp: µ¥ÀÌŸº£À̽º¿¡ ŸÀÓ½ºÅÆÇÁ¸¦ Àü¼ÛÇÒ ¶§ DBTimeStamp¿¡ÀÇÇØ »ç¿ëµÇ´Â Çü½Ä.
true: ÂüÀ» Ç¥ÇöÇÏ´Â »ç¿ëµÇ´Â °ª. ¿¹. FoxproÀÇ °æ¿ì '.T.', Microsoft SQLÀÇ °æ¿ì '1'.
false: °ÅÁþÀ» Ç¥ÇöÇϴµ¥ »ç¿ëµÇ´Â °ª. ¿¹. FoxproÀÇ °æ¿ì '.F.', Microsoft SQLÀÇ °æ¿ì'0'.
replaceQuote: ÀοëºÎÈ£¸¦ À̽ºÄÉÀÌÇÁÇϴµ¥ »ç¿ëµÇ´Â ¹®ÀÚ. ¿¹. Microsoft SQLÀÇ °æ¿ì Å«µû¿ÈÇ¥, ÀÛÀº µû¿ÈÇ¥, MySQLÀÇ °æ¿ì ¿ª½½·¡½¬-ÀÛÀºµû¿ÈÇ¥. qstr¿¡ÀÇÇØ »ç¿ëµÊ.
autoCommit: ÀÚµ¿ Ä¿¹ÔÀ» »ç¿ëÇÒ °ÍÀÎÁö¸¦ Áö½ÃÇÔ. ±âº»°ªÀº Âü.
charSet: »ç¿ëµÇ´Â ±âº» ¹®ÀÚÁýÇÕÀ» ¼³Á¤. ÇöÀç interbase¸¸ Áö¿ø.
dialect: »ç¿ëµÇ´Â ±âº» SQL Dialect ¼³Á¤. ÇöÀç interbase¸¸ Áö¿ø.
metaTablesSQL: µî·ÏµÈ Å×À̺íÀÇ ¸ñ·ÏÀ» ¸®ÅÏÇÏ´Â SQL¹®. ¿¹. MySQLÀÇ °æ¿ì SHOW TABLES.
genID: µ¥ÀÌŸº£À̽º¿¡¼ Áö¿øµÇ´Â °æ¿ì GenID()¿¡ÀÇÇØ »ý¼ºµÈ °¡Àå ÃÖ½ÅÀÇ ID.
cacheSecs: CacheExecute() À̳ª CacheSelectLimit()À» $secs2cache ¸Å°³º¯¼ö¾øÀÌ ½ÇÇàÇÑ °æ¿ì ·¹ÄÚµå¼ÂÀ» ij½¬ÇÏ´Â ½Ã°£(´ÜÀ§ ÃÊ).
sysDate: ÇöÀç ³¯Â¥¸¦ °¡Á®¿À±âÀ§ÇØ È£ÃâµÇ´Â µ¥ÀÌŸº£À̽º ÇÔ¼ö(¹®ÀÚ¿). »ðÀÔ, °»½Å½Ã À¯¿ë.
sysTimeStamp: ÇöÀçÀÇ timestamp/datetime °ªÀ» °¡Á®¿Ã¶§ È£ÃâµÇ´Â µ¥ÀÌŸº£À̽º ÇÔ¼ö(¹®ÀÚ¿).
leftOuter: ¾Ë·ÁÁø °æ¿ì, Left Outter Join¿¡´ëÇÑ ¿¬»êÀÚ¸¦ °¡Áö°í ÀÖ´Â ¹®ÀÚ¿. ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀ¸·Î ¼³Á¤µÊ.
rightOuter: ¾Ë·ÁÁø °æ¿ì, Right Outter Join¿¡´ëÇÑ ¿¬»êÀÚ¸¦ °¡Áö°í ÀÖ´Â ¹®ÀÚ¿. ±×·¸Áö ¾ÊÀº °æ¿ì °ÅÁþÀ¸·Î ¼³Á¤µÊ.
ansiOuter: ºÎ¿ï. ANSI Çü½ÄÀÇ Outter JoinÀÌ Çã¿ëµÇ´Â °æ¿ì Âü. ¿¹: select * from table1 left join table2 on p1=p2.
connectSID: oci8 µå¶óÀ̹ö¿¡¼ Á¢¼Ó½Ã $database ¸Å°³º¯¼ö¸¦ SID·Î ó¸®ÇÒ °ÍÀÎÁö ¾Æ´ÑÁö¸¦ Áö½ÃÇÏ´Â ºÎ¿ï°ª. Oracle 8.0.5 ÀÌÇÏÀÇ ¹öÀü¿¡¼ À¯¿ë.
autoRollback: ÀÌ °ªÀÌ ÂüÀ¸·Î ¼³Á¤µÇ¸é PConnect( )¸¦ ÀÌ¿ëÇÑ ¿µ±¸ Á¢¼ÓÀº ÀÚµ¿ ·Ñ¹éµÈ´Ù. ±âº»°ªÀº °ÅÁþ.
ADOConnection( )
»ý¼ºÀÚ. Á÷Á¢ È£ÃâÇÒ ¼ö ¾ø´Ù. ADONewConnection( )À» »ç¿ëÇÑ´Ù.
Connect($host,[$user],[$password],[$database])
µ¥ÀÌŸ ¼Ò½º³ª ¼¹ö($host)¿¡ »ç¿ëÀÚ ID($user)¿Í ¾ÏÈ£($password)·Î ÀϽà Á¢¼ÓÇÑ´Ù. ¼¹ö°¡ ´ÙÁß µ¥ÀÌŸº£À̽º¸¦ Áö¿øÇÏ´Â °æ¿ì $database·Î µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù.
Á¢¼Ó ¼º°ø ¿©ºÎ¿¡µû¶ó Âü/°ÅÁþÀ» ¸®ÅÏÇÑ´Ù.
ADO ÁÖÀÇ: OLEDB°¡ ¾Æ´Ï¶ó Microsoft ADO¸¦ »ç¿ëÇÏ´Â °æ¿ì »ç¿ëÁßÀÎ OLEDB µ¥ÀÌŸ Á¦°øÀÚ·Î $database ¸Å°³º¯¼ö¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
PostgreSQL: µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÏ´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀº ù¹øÂ° ¸Å°³º¯¼ö $host¿¡ Ç¥ÁØ PostgreSQL Á¢¼Ó ¹®ÀÚ¿À» ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. ÀÌ °æ¿ì ´Ù¸¥ ¸Å°³º¯¼ö´Â ¹«½ÃµÈ´Ù.
Oracle°ú Oci8ÀÇ °æ¿ì µÎ°¡Áö Á¢¼Ó¹æ¹ýÀÌ Á¦°øµÈ´Ù. ù¹øÂ°·Î tnsnames.ora(¶Ç´Â ONAMES³ª HOSTNAMES)¿¡ Á¤ÀÇµÈ TNS ¸íÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. $database Çʵ忡 TNS ¸íÀ» µÎ°í $host Çʵ带 °ÅÁþÀ¸·Î ¼³Á¤ÇÑ´Ù. ¶Ç´Ù¸¥ ¹æ¹ýÀº $host¿¡ ¼¹ö¸¦ ¼³Á¤Çϰí, $database¿¡ µ¥ÀÌŸº£À̽º SID¸¦ ¼³Á¤ÇÑ´Ù. ÀÌ ¹æ¹ýÀ» »ç¿ëÇϸé tsnnames.ora¸¦ ¿ìȸÇϰԵȴÙ.
¿¹:
# tnsnames.ora/ONAMES/HOSTNAMESÀÇ $oraname
$conn->Connect(false, 'scott', 'tiger', $oraname);
$conn->Connect('server:1521', 'scott', 'tiger', 'ServiceName'); # tnsnames.ora¸¦ ¿ìȸÇÔ
php.weblogs.com/ADOdb¿Í ÀÌ ¹èÆ÷º»¿¡ Æ÷ÇÔµÈ testdatabases.inc.php¿¡ µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÏ´Â ¸¹Àº ¿¹°¡ ÀÖ´Ù.
PConnect($host,[$user],[$password],[$database])
µ¥ÀÌŸ ¼Ò½º³ª ¼¹ö($host)¿¡ »ç¿ëÀÚ ID($user)¿Í ¾ÏÈ£($password)·Î ¿µ±¸ Á¢¼ÓÇÑ´Ù. ¼¹ö°¡ ´ÙÁß µ¥ÀÌŸº£À̽º¸¦ Áö¿øÇÏ´Â °æ¿ì $database·Î µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù.
PHP ¸Å´º¾ó¿¡¼ ¾ð±ÞÇÑ °Íó·³ ADOdb 2.21 ÀÌÈÄ ¹öÀü¿¡¼´Â ¼±ÅÃµÈ µ¥ÀÌŸº£À̽º¿¡ ¿µ±¸Á¢¼ÓÇÏ´Â °æ¿ì ·Ñ¹éÀ» ¼öÇàÇÑ´Ù. ¿µÇâÀ» ¹Þ´Â µ¥ÀÌŸº£À̽º´Â º¯°æ ±â·ÏÀ̳ª ¼Ò½º Äڵ带 º¸±â ¹Ù¶õ´Ù.
Á¢¼Ó ¼º°ø ¿©ºÎ¿¡µû¶ó Âü/°ÅÁþÀ» ¸®ÅÏÇÑ´Ù. º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸´Â À§ÀÇ Connect( )¸¦ º¸±â ¹Ù¶õ´Ù.
ADOdb 2.21 ÀÌÈÄ ¹öÀü¿¡¼´Â ÀÚµ¿ ·Ñ¹éÀ» Áö¿øÇÑ´Ù. ¿¹:
$conn = &NewADOConnection('mysql');
$conn->autoRollback = true; # ±âº»°ªÀº °ÅÁþ
$conn->PConnect(...); # ·Ñ¹éÀÌ ¼öÇàµÊ
PConnect( )·Î ¿µ±¸ Á¢¼ÓÇÒ ¶§ ADOdb´Â ¸ÕÀú ·Ñ¹éÀ» ¼öÇàÇÑ´Ù. ÀÌ °ÍÀº PHP´Â ¿µ±¸ Á¢¼ÓÀÌ »ç¿ëµÉ ¶§ ±âÁ¸ÀÇ ½ÇÆÐÇÑ Æ®·£Àè¼Ç¿¡´ëÇØ ·Ñ¹éÀ» º¸ÀåÇÏÁö¾Ê´Â´Ù°í PHP ¹®¼¿¡ ³ª¿ÍÀֱ⶧¹®ÀÌ´Ù. ÀÌ ±â´ÉÀº ÇöÀç Oracle, MySQL, PgSQL, MSSQL, ODBC¿¡¼ ±¸ÇöµÇ¾ú´Ù.
ADOdb 3.11 ÀÌ·¡ PConnect¸¦ È£ÃâÇϱâÀü¿¡ ADODB_NEVER_PERSIST »ó¼ö¸¦ Á¤ÀÇÇØ¼ PConnect¸¦ È£ÃâÇÒ Áö¶óµµ °Á¦·Î ÀϽà Á¢¼ÓÀ¸·Î Á¢¼ÓÇÒ ¼ö ÀÖ´Ù.
NConnect($host,[$user],[$password],[$database])
°Á¦·Î »õ·Î¿î Á¢¼ÓÀ» ¸¸µç´Ù. PHP´Â ¶§¶§·Î Connect()³ª PConnect()¸¦ »ç¿ëÇÒ ¶§ ±âÁ¸ Á¢¼ÓÀ» ´Ù½Ã »ç¿ëÇÑ´Ù. ÇöÀç MySQL(PHP 4.3.0 ÀÌ»ó), PostgreSQL, oci8¿¡¼ À¯µµµÈ µå¶óÀ̹ö¿¡¼¸¸ µ¿ÀÛÇÑ´Ù. ´Ù¸¥ µå¶óÀ̹ö¿¡¼ NConnect( )´Â Connect( )¿Í µ¿ÀÏÇÏ°Ô µ¿ÀÛÇÑ´Ù.
SQL ¹®, $sql¸¦ ½ÇÇàÇÏ°í ¼º°øÀûÀÎ °æ¿ì À¯µµµÈ ADORecordSet Å©·¡½º¸¦ ¸®ÅÏÇÑ´Ù. ºñ·Ï Insert¿Í Update¹®ÀÌ ¼öÇàµÈ °æ¿ì¶óµµ ¼º°øÇÑ °æ¿ì ·¹ÄÚµå¼ÂÀº Ç×»ó ¸®ÅϵȴÙ. ¶ÇÇÑ Prepare()·Î Áغñ(ÄÄÆÄÀÏ)µÈ $sql ¹®À» Àü´Þ ÇÒ ¼ö ÀÖ´Ù.
À¯µµµÈ ADORecordSet Å©·¡½º¸¦ ¸®ÅÏ. ¿¹. MySQLÀ» ÅëÇØ Á¢¼ÓÇÑ °æ¿ì, ADORecordSet_mysqlÀÌ ¸®ÅϵȴÙ. SQL ¹®À» ½ÇÇàÇÏ´ÂÁß ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì °ÅÁþÀÌ ¸®ÅϵȴÙ.
$inputarr ¸Å°³º¯¼ö´Â ¸Å°³º¯¼ö¿Í º¯¼ö¸¦ ¹ÙÀεùÇϴµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. ´ÙÀ½Àº OracleÀÇ ¿¹ÀÌ´Ù:
? °ü·Ê¸¦ »ç¿ëÇÑ ¶Ç´Ù¸¥ ¿¹(ODBC °æ¿ì):
º¯¼ö ¹ÙÀεùÀº SQL ¹®À» ÄÄÆÄÀÏÇϰí ij½¬ÇÏ´Â ¼Óµµ¸¦ ³ô¿©ÁÖ¸ç, °á°úÀûÀ¸·Î º¸´Ù ³ôÀº ¼º´ÉÀ» ±â´ëÇÒ ¼ö ÀÖ´Ù. ÇöÀç Oracle, Inetbase¿Í ODBC°¡ º¯¼ö ¹ÙÀεùÀ» Áö¿øÇÑ´Ù. Interbase/ODBC Çü½ÄÀÇ ?ÀÌ ¹ÙÀεùÀ» Áö¿øÇÏÁö ¾Ê´Â µ¥ÀÌŸº£À̽º¿¡¼ ¹ÙÀεùÀ» Èä³»³»±âÀ§ÇØ »ç¿ëµÈ´Ù.
ODBC, Interbase, oci8po µå¶óÀ̹ö¿¡¼ º¯¼ö ¹ÙÀεù.
ADOdb 3.80 ÀÌ·¡·Î ADOdb´Â Execute( )¿¡¼ ¹úÅ© ¹ÙÀεùÀ» Áö¿øÇÑ´Ù. ¹úÅ© ¹ÙÀεùÀº INSERT/UPDATE³ª DELETE ¹®¿¡ ¹Ù¿îµåµÉ 2Â÷¿ø ¹è¿À» Àü´ÞÇÏ´Â °ÍÀÌ´Ù.
ÀÌ °ÍÀº SQL¹®ÀÌ ¸ÕÀú ¸¸µé¾îÁö±â¶§¹®¿¡ ¾ÆÁÖ ³ôÀº ¼º´ÉÀ» Á¦°øÇÑ´Ù. ÁغñµÈ ¹®ÀåÀº °¢ ¹è¿¿¡´ëÇØ ¹Ýº¹ÀûÀ¸·Î ¼öÇàµÈ´Ù. ¸ðµç ÇàÀÌ ½ÇÇàµÇ°Å³ª ù¹øÂ° ¿À·ù°¡ ¹ß»ýÇÏ¸é ½ÇÇàÀÌ ÁߴܵȴÙ. ÀÌ °ÍÀº ¸¹Àº ·®ÀÇ µ¥ÀÌŸ¸¦ °¡Á®¿À´Âµ¥ ¾ÆÁÖ À¯¿ëÇÏ´Ù.
CacheExecute([$secs2cache,]$sql,$inputarr=false)
Execute¿Í ºñ½ÁÇÏÁö¸¸ ·¹ÄÚµå¼ÂÀÌ $ADODB_CACHE_DIR µð·ºÅ丮¿¡ $secs2cache Ãʵ¿¾È ij½¬µÈ´Ù´Â °Í°ú $inputarr´Â 1Â÷¿ø ¹è¿¸¸ Çã¿ëµÈ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. ¸¸¾à µ¿ÀÏÇÑ µ¥ÀÌŸº£À̽º, µ¿ÀÏÇÑ »ç¿ëÀÚ ID·Î ¿¬°áÇϰí, µ¿ÀÏÇÑ $sql, $inputarr¸¦ »ç¿ëÇØ¼ CacheExecute()À» È£ÃâÇÑ´Ù¸é ±×¸®°í ij½¬µÈ ·¹ÄÚµå¼ÂÀÌ ¸¸·áµÇÁö ¾Ê¾ÒµÈ´Ù¸é ij½¬µÈ ·¹ÄÚµå¼ÂÀÌ ¸®ÅϵȴÙ.
ADOdb 1.80 ÀÌÈÄ·Î $secs2cache ¸Å°³º¯¼ö´Â ¿É¼ÇÀÌ´Ù:
¼º´É ÁÖÀÇ: ÇÊÀÚ´Â ¸î¸î º¥Ä¡¸¶Å©¸¦ ¼öÇàÇßÀ¸¸ç ij½¬ÀÇ ¼º´É»ó ÀÕÁ¡Àº Å©°Ô º¯ÇÑ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ¾ú´Ù. µ¥ÀÌŸº£À̽º ¼¹ö°¡ À¥ ¹ö¼¿¡ºñÇØ ¾ÆÁÖ ´À¸®°Å³ª µ¥ÀÌŸº£À̽º ¼¹ö°¡ Áö³ªÄ¡°Ô °úºÎÇϰ¡ °É¸° °æ¿ì ADOdbÀÇ Ä³½¬´Â µ¥ÀÌŸº£À̽º ¼¹öÀÇ ºÎÇϸ¦ ÁÙ¿©ÁÙ ¼ö Àֱ⶧¹®¿¡ ¾ÆÁÖ È¿°úÀûÀÌ´Ù. ±×·¯³ª µ¥ÀÌŸº£À̽º ¼¹öÀÇ ºÎÇϰ¡ ½ÉÇÏÁö ¾Ê°Å³ª À¥ ¼¹ö¿¡ºñÇØ ÈξÀ ºü¸£´Ù¸é ij½³Àº ¿ÀÈ÷·Á ¼º´ÉÀ» °¨¼Ò½ÃŲ´Ù. ExecuteCursor($sql,$cursorName='rs',$parameters=false)
¿À¶óŬÀÇ ÀúÀåµÈ ÇÁ·Î½ÃÁ®¸¦ ½ÇÇàÇÏ°í ¿À¶óŬÀÇ REF Ä¿¼ º¯¼ö¸¦ Á¤±Ô ADOdb ·¹ÄÚµå¼ÂÀ¸·Î ¹ÝȯÇÑ´Ù. ÀÌ °ÍÀº oci8À» Á¦¿ÜÇÑ ¾î¶² ´Ù¸¥ µ¥ÀÌŸº£À̽º¿¡¼µµ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. ÀÌ °ÍÀ» ¼³°èÇÑ Robert Tuttle¿¡ °¨»çÇÑ´Ù.
ExecuteCursor()´Â ³»ºÎÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ µ¿ÀÛÇÏ´Â º¸Á¶ ÇÔ¼öÀÌ´Ù:
SelectLimit($sql,$numrows=-1,$offset=-1,$inputarr=false)
¼º°øÇÏ¸é ·¹ÄÚµå¼ÂÀÌ ¸®ÅϵȴÙ. ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀÌ ¸®ÅϵȴÙ. PostgreSQLÀÇ LIMIT $numrows OFFSET $offset ±¸¸¦ Èä³»³½ SELECT ¹®À» ¼öÇàÇÑ´Ù.
PostgreSQL¿¡¼ SELECT * FROM TABLE LIMIT 3Àº ´ÜÁö ¼¼°³ÀÇ ·¹Äڵ常 ¸®ÅÏÇÑ´Ù. ÀÌ °ÍÀº
SELECT * FROM TABLE LIMIT 3 OFFSET 2Àº 3, 4, 5 ·¹Äڵ尡 ¸®ÅϵȴÙ(¿¹: ·¹ÄÚµå 2ÀÌÈÄÀÇ 3Çà). ÀÌ °ÍÀº ADOdb¿¡¼
ÁÖÀÇ: ÀÌ °ÍÀº MySQLÀÇ LIMIT ±¸¿Í´Â ¹Ý´ëÀÌ´Ù. ¸¶Áö¸· ÇàÀ¸·ÎºÎÅÍ 11°³ÀÇ ÇàÀ» °¡Á®¿À±âÀ§ÇØ
¸¶Áö¸· ¸Å°³º¯¼ö $inputarr´Â Oracle oci8°ú°°ÀÌ º¯¼ö ¹ÙÀεùÀ» Áö¿øÇÏ´Â µ¥ÀÌŸº£À̽º¸¦ À§ÇÑ °ÍÀÌ´Ù. ÀÌ °ÍÀº °á°úÀûÀ¸·Î SQL ÄÄÆÄÀÏ ¿À¹öÇìµå¸¦ ÁÙ¿©ÁØ´Ù. ´ÙÀ½Àº OracleÀÇ ¿¹ÀÌ´Ù:
oci8po µå¶óÀ̹ö(¿À¶óŬ ȣȯ µå¶óÀ̹ö)´Â º¸´Ù Ç¥ÁØÀûÀÎ ¹ÙÀεù º¯¼ö, ?¸¦ »ç¿ëÇÑ´Ù.
Ron WilsonÀÇ º¸°í¿¡µû¸£¸é SelectLimit´Â UNION°ú´Â µ¿ÀÛÇÏÁö ¾Ê´Â´Ù°í ÇÑ´Ù.
CacheSelectLimit([$secs2cache,] $sql, $numrows=-1,$offset=-1,$inputarr=false)
SelectLimit¿Í À¯»çÇÏÁö¸¸ ¸®ÅÏµÈ ·¹ÄÚµå¼ÂÀÌ $ADODB_CACHE_DIR µð·ºÅ丮¿¡ $secs2cache Ãʵ¿¾È ij½¬µÈ´Ù´Â °ÍÀÌ ´Ù¸£´Ù.
1.80 ÀÌ·¡ $secs2cacheÀº ¿É¼ÇÀ̸ç, $connection->cacheSecs¿¡¼ ij½¬µÉ ½Ã°£À» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
$conn->Execute("SELECT * FROM TABLE WHERE COND=:val", array('val'=> $val));
$conn->Execute("SELECT * FROM TABLE WHERE COND=?", array($val));
º¯¼ö ¹ÙÀεù
$rs = $db->Execute('select * from table where val=?', array('10'));
oci8 µå¶óÀ̹ö¿¡¼ º¯¼ö ¹ÙÀεù:
$rs = $db->Execute('select name from table where val=:key',
array('key' => 10));
¹úÅ© ¹ÙÀεù
$arr = array(
array('Ahmad',32),
array('Zulkifli', 24),
array('Rosnah', 21)
);
$ok = $db->Execute('insert into table (name,age) values (?,?)',$arr);
include('adodb.inc.php');
include('tohtml.inc.php');
$ADODB_CACHE_DIR = '/usr/local/ADOdbcache';
$conn = &ADONewConnection('mysql');
$conn->PConnect('localhost','userid','password','database');
$rs = $conn->CacheExecute(15, 'select * from table'); # 15 ÃÊ Ä³½¬
rs2html($rs); /* ·¹ÄÚµå¼ÂÀ» HTML Ç¥·Î */
$conn->Connect(...);
$conn->cacheSecs = 3600*24; // 24 ½Ã°£ ij½¬
$rs = $conn->CacheExecute('select * from table');
$secs2cache ¸Å°³º¯¼ö¸¦ ´©¶ôÇÑ °æ¿ì $connection->cacheSecs(±âº»°ªÀº 3600ÃÊ ¶Ç´Â 1½Ã°£)ÀÌ »ç¿ëµÈ´Ù. SELECT ¹®¸¸ CacheExecute()¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
$db = ADONewConnection("oci8");
$db->Connect("foo.com:1521", "uid", "pwd", "FOO");
$rs = $db->ExecuteCursor("begin :cursorvar := getdata(:param1); end;",
'cursorvar',
array('param1'=>10));
# $rs´Â ÀÌÁ¦ ADOdb ·¹ÄÚµå¼Â °³Ã¼Ã³·³ µ¿ÀÛÇÑ´Ù
rs2html($rs);
$stmt = $db->Prepare("BEGIN :RS := SP_FOO(); END;");
$db->Parameter($stmt, $cur, 'RS', false, -1, OCI_B_CURSOR);
$rs = $db->Execute($stmt);
$connection->SelectLimit('SELECT * FROM TABLE',3)¿Í µ¿ÀÏÇÏ´Ù. ÀÌ ±â´ÉÀº ÀÌ·¯ÇÑ Æ¯Â¡À» Áö¿øÇÏÁö¾Ê´Â µ¥ÀÌŸº£À̽ºÀÇ °æ¿ì ½Ã¹Ä·¹ÀÌÆ®µÈ´Ù.$connection->SelectLimit('SELECT
* FROM TABLE',3,2)¸¦ ½ÇÇàÇÏ´Â °Í°ú µ¿ÀÏÇÏ´Ù.$connection->SelectLimit('SELECT * FROM TABLE',-1,10)¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Ù.
$conn->SelectLimit("SELECT * FROM TABLE WHERE COND=:val", 100,-1,array('val'=> $val));
$conn->SelectLimit("SELECT * FROM TABLE WHERE COND=?", 100,-1,array('val'=> $val));
$conn->Connect(...);
$conn->cacheSecs = 3600*24; // 24½Ã°£ ij½¬
$rs = $conn->CacheSelectLimit('select * from table',10);
CacheFlush($sql=false,$inputarr=false)
$ADODB_CACHE_DIR¿¡ SQL¹® $sql¿¡´ëÇØ ij½¬µÈ ÀÓÀÇÀÇ ·¹ÄÚµå¼ÂÀ» »èÁ¦ÇÑ´Ù.
¸Å°³º¯¼ö¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¸ðµç adodb_*.cache ÆÄÀÏÀÌ »èÁ¦µÈ´Ù.
ij½¬µÈ ·¹ÄÚµå¼ÂÀ» ¼öÀÛ¾÷À¸·Î »èÁ¦ÇÏ±æ ¿øÇÑ´Ù¸é ´ÙÀ½ PHP ÄÚµå(À¯´Ð½º¿¡¼¸¸ µ¿ÀÛÇÔ)¸¦ ½ÇÇàÇϱ⠹ٶõ´Ù::
system("rm -f `find ".$ADODB_CACHE_DIR." -name
adodb_*.cache`");
ÀϹÝÀûÀ¸·Î ¸ðµç ¸¸·áµÈ ÆÄÀÏÀÇ »èÁ¦´Â À¯´Ð½ºÀÇ °æ¿ì, crontab, À©µµ¿ìÁîÀÇ °æ¿ì at.exe¸¦ »ç¿ëÇÏ°í ´ÙÀ½°ú ºñ½ÁÇÑ šv ½ºÅ©¸³Æ®¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù:
#------------------------------------------------------
# ÀÌ ¿¹´Â TMPPATH µð·ºÅ丮³»ÀÇ ÆÄÀÏÀ» »èÁ¦ÇÑ´Ù
# »èÁ¦µÇ´Â ÆÄÀÏÀº À̸§¿¡ ".cache"¸¦ Æ÷ÇÔÇϰí ÀÖÀ¸¸ç
# »ý¼ºÀÏÀÚ°¡ 7ÀÏ ÀÌ»óµÈ ÆÄÀϵéÀÌ´Ù.
#------------------------------------------------------
AGED=7
find ${TMPPATH} -mtime +$AGED | grep "\.cache" | xargs rm -f
PEAR DB ¿À·ù ¹øÈ£ ½Ã½ºÅÛÀ» ±âÃÊ·Î °¡»óÈµÈ ¿À·ù ¹øÈ£¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϱâÀü¿¡ adodb-error.inc.php¸¦ IncludeÇØ¾ß ÇÑ´Ù. ¸Å°³º¯¼ö¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é MetaError´Â ErrorNo()¸¦ È£ÃâÇϸç, ÀÌ °ÍÀ» º¯È¯ÇÑ´Ù. ¿À·ù ¹øÈ£°¡ °¡»óȵÇÁö ¾ÊÀ¸¸é MetaError´Â -1(DB_ERROR)À» ¸®ÅÏÇÑ´Ù.
¿À·ù ¸Þ½ÃÁö¸¦ º¹¿øÇϱâÀ§ÇØ MetaError()¿¡ÀÇÇØ ¸®ÅÏµÈ ¿À·ù ¹øÈ£¸¦ Àü´ÞÇÑ´Ù.
¸¶Áö¸· »óųª ¿À·ù ¸Þ½ÃÁö¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ °ÍÀº ¿À·ù°¡ ¹ß»ýÇÏÁö ¾ÊÀº °Ü¿ì¿¡µµ ¹®ÀÚ¿À» ¸®ÅÏÇÒ ¼ö ÀÖ´Ù. ÀϹÝÀûÀ¸·Î ADOdb ÇÔ¼ö°¡ ¿À·ù½Ã °ÅÁþÀ» ¸®ÅÏÇÏ´Â °æ¿ì¸¦ Á¦¿ÜÇϰí ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÒ ÇÊ¿ä´Â ¾ø´Ù.
ÁÖÀÇ: debug¸¦ ÂüÀ¸·Î ¼³Á¤ÇÑ °æ¿ì Execute ÇÔ¼ö°¡ È£ÃâµÉ ¶§ SQL ¿À·ù ¸Þ½ÃÁö´Â Ç×»ó Ãâ·ÂµÈ´Ù.
¸¶Áö¸· ¿À·ù ¹øÈ£¸¦ ¸®ÅÏÇÑ´Ù. ÀÌÀü ¹öÀüÀÇ PHP(4.0.6 ÀÌÇÏ)´Â ODBC¿¡´ëÇÑ ¿À·ù ¹øÈ£¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. ÀϹÝÀûÀ¸·Î ADOdb ÇÔ¼ö°¡ ¿À·ù½Ã °ÅÁþÀ» ¸®ÅÏÇÏ´Â °æ¿ì¸¦ Á¦¿ÜÇϰí ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÒ ÇÊ¿ä´Â ¾ø´Ù.
ÇöÀçÀÇ ÆäÄ¡ ¸ðµå¸¦ ¼³Á¤ÇÏ°í ¼³Á¤µÈ °ªÀ» $db->fetchMode¿¡ ÀúÀåÇÑ´Ù. »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµå´Â ADODB_FETCH_ASSOC°ú ADODB_FETCH_NUMÀÌ´Ù. º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸´Â $ADODB_FETCH_MODE¸¦ º¸±â ¹Ù¶õ´Ù.
ÀÌÀü ÆäÄ¡ ¸ðµå¸¦ ¸®ÅÏÇÑ´Ù. SetFetchMode( )°¡ ÀÌÀü¿¡ È£ÃâµÈ ÀûÀÌ ¾ø´Ù¸é °ÅÁþÀÌ ¸®Å쵃 ¼ö ÀÖ´Ù.
CreateSequence($seqName = 'adodbseq',$startID=1)
½ÃÄö½º¸¦ »ý¼ºÇÑ´Ù. ´ÙÀ½¹ø¿¡ GenID( )°¡ È£ÃâµÇ¸é ¸®ÅÏµÈ °ªÀº $startID°¡ µÈ´Ù. ADOdb 2.60¿¡¼ Ãß°¡µÇ¾ú´Ù.
DropSequenceD($seqName = 'adodbseq')
½ÃÄö½º¸¦ »èÁ¦ÇÑ´Ù. ADOdb 2.60¿¡¼ Ãß°¡µÇ¾ú´Ù.
GenID($seqName = 'adodbseq',$startID=1)
½ÃÄö½º ¹øÈ£¸¦ »ý¼ºÇÑ´Ù. ÇöÀç interbase, mysql, postgresql, oci8, oci8pro, mssql, ODBC¿¡ ±Ù°ÅÇÑ µå¶óÀ̹ö(access, vfp, db2µî)¿Í µ¿ÀÛÇÑ´Ù. ½ÃÄö½ºÀÇ À̸§À¸·Î¼ $sqlName¸¦ »ç¿ëÇÑ´Ù. GenID()´Â ½ÃÄö½º°¡ Á¸ÀçÇÏÁö¾Ê´Â °æ¿ì ÀÚµ¿ÀûÀ¸·Î ½ÃÄö½º¸¦ »ý¼ºÇÑ´Ù(Á¦°øµÈ »ç¿ëÀÚ ID°¡ ±ÇÇÑÀÌ ÀÖ´Â °æ¿ì). ±×·¸Áö¾ÊÀ¸¸é ½º½º·Î ½ÃÄö½º¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù.
µ¥ÀÌŸº£À̽º µå¶óÀ̹ö°¡ ½ÃÄö½º¸¦ ¿¡¹Ä·¹À̼ÇÇÏ´Â °ÍÀ̶ó¸é Å×À̺íÀÇ À̸§ÀÌ ½ÃÄö½ºÀÇ À̸§ÀÌ µÈ´Ù. Å×À̺íÀº ÇϳªÀÇ Ä÷³, "id"¸¦ °¡Áö°í ÀÖ¾î¾ß Çϸç, Ä÷³ÀÇ Å¸ÀÔÀº Á¤¼ö ¶Ç´Â numeric(16)º¸´Ù Å« °ÍÀÌ¾ß ÇÑ´Ù.
ODBC¿Í ½ÃÄö½º¸¦ Áö¿øÇÏÁö ¾Ê´Â µ¥ÀÌŸº£À̽º(¿¹: mssql, mysql) °æ¿ì, °¢ ½ÃÄö½º¿¡´ëÇÑ Å×ÀÌÀ» »ý¼ºÇÑ´Ù. ¸¸¾à ¸ÕÀú ½ÃÄö½º°¡ Á¤ÀǵÇÁö¾Ê¾Ò´Ù¸é $startID¿¡¼ ¼³Á¤µÈ ½ÃÀÛ°ªÀ¸·Î »ý¼ºµÈ´Ù.
ÁÖÀÇ: ADOdb 1.9 ÀÌÇÏÀÇ mssql µå¶óÀ̹öÀÇ GenID()´Â 16 ¹ÙÀÌÆ®ÀÇ GUID¸¦ »ý¼ºÇϴµ¥ »ç¿ëµÈ´Ù.
UpdateBlob($table,$column,$val,$where)
blob($val¿¡)À» $tableÀÇ $where°¡ Áö½ÃÇÏ´Â ÇàÀÇ $column¿¡ ÀúÀåÇÒ ¼ö ÀÖ´Ù.»ç¿ë¿¹:
# ¿À¶óŬÀÇ °æ¿ì
$conn->Execute('INSERT INTO blobtable (id, blobcol) VALUES (1, empty_blob())');
$conn->UpdateBlob('blobtable','blobcol',$blobvalue,'id=1');
# ´Ù¸¥ DBÀÇ °æ¿ì
$conn->Execute('INSERT INTO blobtable (id, blobcol) VALUES (1, null)');
$conn->UpdateBlob('blobtable','blobcol',$blobvalue,'id=1');
¼º°øÇϸé ÂüÀÌ ¸®ÅϵǸç, ±×·¸Áö ¾ÊÀº °æ¿ì °ÅÁþÀÌ ¸®ÅϵȴÙ. MySQL, PostgreSQL, Oci8, Oci8pro¿Í Interbase µå¶óÀ̹ö¿¡ÀÇÇØ Áö¿øµÈ´Ù. ´Ù¸¥ µå¶óÀ̹ö´Â ÇØ´ç µå¶óÀ̹öÀÇ °³¹ß »óȲ¿¡µû¶ó µ¿ÀÛÇÒ ¼öµµ ÀÖ´Ù.
ÁÖÀÇ: Interbase blob´Â SELECT¸¦ »ç¿ëÇØ¼ º¹¿øÇÒ ¶§ ¿ø·¡ÀÇ °ªÀ» ²ø¾î³»±âÀ§ÇØ $connection->DecodeBlob($blob);¸¦ »ç¿ëÇØ¼ µðÄÚµåÇÒ Çʿ䰡 ÀÖ´Ù(PHP 4.1.0 ÀÌÇÏ ¹öÀü).
PostgreSQLÀÇ °æ¿ì blob oid¸¦ »ç¿ëÇϰųª bytea Çʵå·Î ÀúÀåÇÒ ¼ö ÀÖ´Ù. UpdateBlob( )Àº bytea Çʵå´Â »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ oid´Â »ç¿ëÇÒ ¼ö ¾ø´Ù. ¹Ý´ë·Î UpdateBlobFile( )´Â oid¸¦ Áö¿øÇÏÁö¸¸ bytea µ¥ÀÌŸ´Â Áö¿øÇÏÁö ¾Ê´Â´Ù
¸¸¾à oid·Î Àü´ÞµÇÁö¾ÊÀ¸¸é UpdateBlob()´Â bytea Çʵ忡 ÀúÀåµÈ °ÍÀ¸·Î °£ÁÖÇÑ´Ù.
UpdateClob($table,$column,$val,$where)
clob($valÀÇ)À» $tableÀÇ $where°¡ Áö½ÃÇÏ´Â ÇàÀÇ $column¿¡ ÀúÀåÇÒ ¼ö ÀÖ´Ù. UpdateBlob¿Í À¯»çÇÏÁö¸¸ Character Large OBjects¶ó´Â Á¡ÀÌ ´Ù¸£´Ù.»ç¿ë¿¹:
# ¿À¶óŬ
$conn->Execute('INSERT INTO clobtable (id, clobcol) VALUES (1, empty_clob())');
$conn->UpdateBlob('clobtable','clobcol',$clobvalue,'id=1');
# ´Ù¸¥ DBÀÇ °æ¿ì
$conn->Execute('INSERT INTO clobtable (id, clobcol) VALUES (1, null)');
$conn->UpdateBlob('clobtable','clobcol',$clobvalue,'id=1');
UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB')
UpdateBlob°ú ºñ½ÁÇÏÁö¸¸ blob°¡ À§Ä¡ÇÑ ÆÄÀÏ °æ·Î¸¦ Àü´ÞÇÏ´Â °ÍÀÌ ´Ù¸£´Ù.
PostgreSQLÀÇ °æ¿ì blob oid¸¦ »ç¿ëÇÏ´Â °æ¿ì ÀÌ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â bytea Çʵ带 Áö¿øÇÏÁö ¾Ê´Â´Ù.
¼º°íÇϸé ÂüÀ», ±×·¸Áö ¾ÊÀ¸¸é °ÅÁþÀ» ¸®ÅÏÇÑ´Ù.
¸î¸î µ¥ÀÌŸº£½Ã½º´Â ¾÷·ÎµåÀü¿¡ ¼öÀÛ¾÷À¸·Î blob¸¦ ÀÎÄÚµåÇÒ Çʿ䰡 ÀÖ´Ù. ÁÖÀÇ: UpdateBlob( )³ª UpdateBlobFile( )¸¦ »ç¿ëÇÑ´Ù¸é º¯È¯Àº ÀÚµ¿ÀûÀ¸·Î ¼öÇàµÇ¹Ç·Î ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÒ ÇÊ¿ä´Â ¾ø´Ù. PostgreSQLÀÇ °æ¿ì ÇöÀç BlobEncode()´Â bytea Çʵ忡´ëÇØ¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÀÎÄÚµåµÈ blob °ªÀ» ¸®ÅÏÇÑ´Ù..
ÁÖÀÇ: blobEncodeType¶ó°í ºÎ¸£´Â Á¢¼Ó ¼Ó¼ºÀÌ Á¸ÀçÇÑ´Ù. ¼Ó¼º °ªÀº ´ÙÀ½°ú °°´Ù:
°ÅÁþ - ÀÎÄÚµå, µðÄڵ带 ¼öÇàÇÒ Çʿ䰡 ¾øÀ½.
'I' - blob ÀÎÄÚµùÀÌ ÇÊ¿äÇÔ, ¸®ÅÏµÈ blob(ÀÎÄÚµåµÈ)Àº ¼ýÀÚ·Î ±¸¼ºµÈ(ÀοëÇÒ ÇÊ¿ä´Â ¾øÀ½).
'C' - blob ÀÎÄÚµùÀÌ ÇÊ¿äÇÔ, ¸®ÅÏµÈ blob(ÀÎÄÚµåµÈ)Àº ¹®ÀÚ·Î ±¸¼ºµÊ(ÀοäÇÒ Çʿ䰡 ÀÖÀ½).
ÀÌ °ÍÀº ¼øÀüÈ÷ ¹®¼È ¸ñÀûÀ¸·Î¸¸ »ç¿ëµÈ´Ù. ´ÙÁß µ¥ÀÌŸº£À̽º µå¶óÀ̹ö¸¦ Çã¿ëÇÏ´Â ÇÁ·Î±×·¥Àº blob¸¦ ó¸®ÇÒ ¶§ ÇØ¾ßÇÏ´Â ¿Ã¹Ù´Â °ÍÀÌ ¹«¾úÀÎÁö ¾Ë°í ÀÖ´Ù.
¸î¸î µ¥ÀÌŸº£À̽º´Â SELECT ¹®À» ¼öÇàÇÑ ÈÄ ¼öÀÛ¾÷À¸·Î blob¸¦ µðÄÚµåÇØ¾ßÇÑ´Ù. ¸¸¾à µ¥ÀÌŸº£À̽º°¡ µðÄÚµùÀ» ÇÊ¿ä·ÎÇÏÁö ¾Ê´Â´Ù¸é ÀÌ ÇÔ¼ö´Â º¯°æµÇÁö¾Ê´Â blob¸¦ ¸®ÅÏÇÑ´Ù. ÇöÀç BlobDecode´Â ´Ü ÇϳªÀÇ µ¥ÀÌŸº£À̽º, PostgreSQL¿¡¼, blob oid¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡¸¸ ÇÊ¿äÇÏ´Ù(¸¸¾à bytea Çʵ带 »ç¿ëÇÑ´Ù¸é ÀÚµ¿ÀûÀ¸·Î µðÄÚµåµÈ´Ù).
Replace($table, $arrFields, $keyCols,$autoQuote=false)
·¹Äڵ带 °»½ÅÇÑ´Ù. ¸¸¾à ·¹Äڵ尡 Á¸ÀçÇÏÁö¾Ê´Â´Ù¸é »ðÀԵȴÙ. ½ÇÆÐ½Ã 0ÀÌ ¸®ÅϵǸç, °»½Å½Ã 1ÀÌ, »ðÀԽà 2°¡ ¸®ÅϵȴÙ. ÀÌ ÇÔ¼ö´Â MySQLÀÇ Replace¿Í ´Ù¸£´Ù. MySQLÀÇ Replace´Â ·¹Äڵ带 »èÁ¦ÇÑ ÈÄ, »õ·Î¿î ·¹Äڵ带 »ðÀÔÇÑ´Ù. ÀÌ °ÍÀº ¶ÇÇÑ ÇÁ¶óÀ̸Ӹ® Ű´Â ¾÷µ¥ÀÌÆ® ÇÒ ¼ö ¾øÀ½À» ÀǹÌÇÑ´Ù. ÀÌ °ÍÀÇ À¯ÀÏÇÑ ¿¹¿Ü´Â Interbase¿Í Interbase·ÎºÎÅÍ À¯µµµÈ µå¶óÀ̹öÀÌ´Ù. InterbaseÀÇ °æ¿ì Interbase API Á¦ÇÑ ¶§¹®¿¡ »èÁ¦/»ðÀÔÀ» »ç¿ëÇÑ´Ù.
¸Å°³º¯¼ö $tableÀº Å×ÀÌºí ¸íÀ̸ç, $arrFields´Â Çʵå¸íÀ» Ű·ÎÇÏ´Â ¿¬°ü¹è¿À̸ç, $KeyCols´Â ÇÁ¶óÀ̸Ӹ® ŰÀ̰ųª ÇÁ¶óÀ̸Ӹ® ŰÀÇ ¹è¿(Á¶ÇÕ Å°ÀÎ °æ¿ì)À̾î¾ß ÇÑ´Ù. $autoQuote°¡ ÂüÀ¸·Î ¼³Á¤µÇ¸ç, Replace()´Â Numeric ÇüÀ» Á¦¿ÜÇÑ ¸ðµç ÇüÀ» ÀοëÇÑ´Ù. ÀÚµ¿ ÀοëÀº NullÀº ÀοëÇÏÁö´Â ¾Ê´Â´Ù. ÀÚµ¿ ÀοëÀº SQL ÇÔ¼ö³ª ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¸é µ¿ÀÛÇÏÁö ¾Ê´Â´Ù.
¿¹:
GetUpdateSQL(&$rs, $arrFields, $forceUpdate=false,$magicq=false)
·¹ÄÚµå¼Â $rs·Î ÁÖ¾îÁø Å×À̺íÀ» °»½ÅÇÒ ¼ö ÀÖ´Â SQL ¹®À» »ý¼ºÇÑ´Ù. º¯°æµÈ ¹è¿ Çʵå $arrFields°¡ ÇöÀç ·¹ÄÚµå¼Â°ú ºñ±³µÈ´Ù. $arrFields´Â Ä÷³¸íÀ» Ű, »õ·Î¿î°ªÀ» °ªÀ¸·ÎÇÏ´Â ¿¬°ü¹è¿ÀÌ´Ù. ¸¸¾à $forceUpdate°¡ ÂüÀ̸é $arrFields°¡ $rs->fields¿Í µ¿ÀÏÇÒ Áö¶óµµ SQL ¹®À» »ý¼ºÇÑ´Ù. °ü·Ã ·¹ÄÚµå¼ÂÀÌ ÇÊ¿äÇÏ´Ù. $magicq´Â ¸ÅÁ÷ Quote(qstr()À» ÂüÁ¶)¸¦ »ç¿ëÇÒ °ÍÀÎÁö ¾Æ´ÑÁö¸¦ Áö½ÃÇϴµ¥ »ç¿ëµÈ´Ù. ¹è¿ÀÇ Çʵå¸íÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê´Â´Ù.
3.61 ÀÌ·¡·Î define('ADODB_FORCE_NULLS',1)°ú ¸ðµç PHP ³ÎÀº SQL ³Î·Î ÀÚµ¿ º¯È¯µÈ´Ù.
GetInsertSQL(&$rs, $arrFields,$magicq=false)
·¹ÄÚµå¼Â $rs·Î ÁÖ¾îÁø Å×ÀÌºí¿¡ »ðÀÔÇÒ ¼ö ÀÖ´Â SQL ¹®À» »ý¼ºÇÑ´Ù. °ü·Ã ÁúÀǸ¦ ÇÊ¿ä·ÎÇÑ´Ù. $magicq´Â Quote(qstr()À» ÂüÁ¶)¸¦ »ç¿ëÇÒ °ÍÀÎÁö ¾Æ´ÑÁö¸¦ Áö½ÃÇϴµ¥ »ç¿ëµÈ´Ù. ¹è¿ÀÇ Çʵå¸íÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê´Â´Ù.
3.61 ÀÌ·¡·Î define('ADODB_FORCE_NULLS',1)°ú ¸ðµç PHP ³ÎÀº SQL ³Î·Î ÀÚµ¿ º¯È¯µÈ´Ù.
PageExecute($sql, $nrows, $page, $inputarr=false)
·¹ÄÚµå¼ÂÀ» ÆäÀÌÁöÈÇϴµ¥ »ç¿ëµÈ´Ù. $page´Â 1 ºÎÅÍ ½ÃÀ۵ȴÙ. ÂüÁ¶: ¿¹
8.$rs = $db->Execute("select bloboid from postgres_table where id=$key");
$blob = $db->BlobDecode( reset($rs->fields) );
# ÇϳªÀÇ ÇÁ¶óÀ̸Ӹ® Ű
$ret = $db->Replace('atable',
array('id'=>1000,'firstname'=>'Harun','lastname'=>'Al-Rashid'),
'id',$autoquote = true);
# UPDATE atable SET firstname='Harun',lastname='Al-Rashid' WHERE id=1000 À̳ª
# INSERT INTO atable (id,firstname,lastname) VALUES (1000,'Harun','Al-Rashid') »ý¼º
# Á¶ÇÕŰ
$ret = $db->Replace('atable2',
array('firstname'=>'Harun','lastname'=>'Al-Rashid', 'age' => 33, 'birthday' => 'null'),
array('lastname','firstname'),
$autoquote = true);
# ÀÚµ¿ ÀÎ¿ë »ç¿ë ¾ÈÇÔ
$ret = $db->Replace('atable2',
array('firstname'=>"'Harun'",'lastname'=>"'Al-Rashid'", 'age' => 'null'),
array('lastname','firstname'));
CachePageExecute($secs2cache, $sql, $nrows, $page, $inputarr=false)
·¹ÄÚµå¼ÂÀ» ÆäÀÌÁöÈÇϴµ¥ »ç¿ëµÈ´Ù. $page´Â 1ºÎÅÍ ½ÃÀ۵ȴÙ. ÂüÁ¶: ¿¹ 8. PageExecuteÀÇ Ä³½¬¹öÀüÀÌ´Ù.
µ¥ÀÌŸº£À̽º Á¢¼ÓÀ» ´Ý´Â´Ù. PHP¿¡¼´Â PHP4ÀÇ ÂüÁ¶ °è¼ö ¸ÞÄ«´ÏÁòÀÌ ÀÚµ¿ÀûÀ¸·Î Á¢¼ÓÀ» »èÁ¦Çϱ⶧¹®¿¡ Á¢¼Ó Á¾·á½Ã ´õÀÌ»ó °Á¦·Î Á¢¼ÓÀ» ÇØÁ¦ÇÒ Çʿ䰡 ¾ø´Ù°í ¾ð±ÞÇϰí ÀÖ´Ù.
Æ®·£Àè¼Ç °¨½Ã¸¦ ½ÃÀÛÇÑ´Ù. SQL ¹®ÀÌ ½ÇÇàµÊ¿¡µû¶ó ADOdb´Â SQL ¿À·ù¸¦ °¨½ÃÇϰí, ÀÓÀÇÀÇ ¿À·ù°¡ °ËÃâ(CompleteTrans()°¡ È£Ãâ)µÇ¸é ÀÚµ¿ ·Ñ¹éÀ» ½ÇÇàÇÑ´Ù.
¿Ö StartTrans()°¡ BeginTrans()º¸´Ù ¿ì¼öÇÑÁö ÀÌÇØÇϱâÀ§ÇØ BeginTrans()¸¦ »ç¿ëÇÑ ¸î¸î ¹æ¹ýÀ» Á¶»çÇß´Ù. ´ÙÀ½Àº Æ®·£Àè¼ÇÀ» »ç¿ëÇÏ´Â À߸øµÈ ¹æ¹ýÀÌ´Ù(¿À·ù °Ë»ç¸¦ ¼öÇàÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î):
$DB->BeginTrans();
$DB->Execute("update table1 set val=$val1 where id=$id");
$DB->Execute("update table2 set val=$val2 where id=$id");
$DB->CommitTrans();
ÀÌ ¿¹´Â table1À» °»½Å ÇÒ ¼ö ÀÖ°í, ½ÇÆÐ½Ã table2¸¦ °»½Å ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº º¸´Ù ³ªÀº ¹æ¹ýÀÌ´Ù:
$DB->BeginTrans();
$ok = $DB->Execute("update table1 set val=$val1 where id=$id");
if ($ok) $ok = $DB->Execute("update table2 set val=$val2 where id=$id");
if ($ok) $DB->CommitTrans();
else $DB->RollbackTrans();
´ÙÀ½Àº ¶Ç ´Ù¸¥ ¹æ¹ýÀÌ´Ù(ADOdb 2.0 ÀÌ»ó):
$DB->BeginTrans();
$ok = $DB->Execute("update table1 set val=$val1 where id=$id");
if ($ok) $ok = $DB->Execute("update table2 set val=$val2 where id=$id");
$DB->CommitTrans($ok);
À§ÀÇ ¿¹¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ SQL ¹®À» ¼öÇàÇÒ ¶§¸¶´Ù $ok¸¦ °¨½ÃÇØ¾ß ÇÑ´Ù. StartTrans()´Â ¸ðµç SQL ¿À·ù¸¦ °¨½ÃÇÒ ¼ö Àֱ⶧¹®¿¡ BeginTrans()¿¡ºñÇØ °³¼±µÇ¾ú´Ù. ÀÌ °ÍÀº SQL ÁúÀǰ¡ ¼öÇàµÇ´Â ºí·¢¹Ú½º ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§¿¡´Â ƯÈ÷ À¯¿ëÇÏ´Ù. ¶ÇÇÑ StartTrans ºí·°³»ÀÇ ¸ðµç BeginTrans, CommitTrans ¿Í RollbackTrans È£ÃâÀº ¹«½ÃµÈ´Ù. ½ÉÁö¿© ºí·¢¹Ú½º ÇÔ¼ö°¡ Ä¿¹ÔÀ» ¼öÇàÇÒ Áö¶óµµ ¹«½ÃµÈ´Ù.
$DB->StartTrans();
CallBlackBox();
$DB->Execute("update table1 set val=$val1 where id=$id");
$DB->Execute("update table2 set val=$val2 where id=$id");
$DB->CompleteTrans($ok);
StartTrans ºí·°Àº ÁßøµÉ ¼ö ÀÖÁö¸¸ ¾ÈÂÊÀÇ ºí·°Àº ¹«½ÃµÈ´Ù´Â °Í¿¡ ÁÖÀÇÇϱâ¹Ù¶õ´Ù.
CompleteTrans($autoComplete=true)
StartTrans()·Î È£ÃâµÈ ¸ðµç Æ®·£Àè¼ÇÀ» ¿Ï·áÇÑ´Ù. ÀÌ ÇÔ¼ö´Â SQL ¿À·ù¸¦ °¨½ÃÇϰí, ¿À·ù°¡ ¾øÀ¸¸é Ä¿¹ÔÇϰí, ±×·¸Áö ¾ÊÀ¸¸é ·Ñ¹éÇÑ´Ù. Ä¿¹Ô½Ã ÂüÀÌ ¸®ÅϵǸç, ·Ñ¹é½Ã °ÅÁþÀÌ ¸®ÅϵȴÙ. ¸Å°³º¯¼ö $autoCompleteÀÌ ÂüÀ̸é SQL ¿À·ù¸¦ °¨½ÃÇÏ°í °á°ú¿¡µû¶ó Àû´çÈ÷ Ä¿¹Ô, ·Ñ¹éÇÑ´Ù. SQL ¿À·ù°¡ °ËÃâµÇÁö¾ÊÀº °æ¿ì¿¡µµ ·Ñ¹éÇÏ·Á¸é $autoComplete¸¦ °ÅÁþÀ¸·Î ¼³Á¤ÇÑ´Ù.
StartTrans()·Î ½ÃÀÛµÈ Æ®·£Àè¼ÇÀ» ½ÇÆÐÇÏ°Ô ÇÑ´Ù. CompleteTrans()ÀÌ È£ÃâµÇ¸é ÀÏ´Ü ·Ñ¹éÀÌ ¼öÇàµÈ´Ù.
Áö´ÉÀû Æ®·£Àè¼ÇÀÇ ½ÇÆÐ ¿©ºÎ¸¦ °Ë»çÇÑ´Ù. ¿¹: SQL ¼öÇà»óÀÇ ¿À·ù°¡ ¹ß»ýÇ߰ųª FailTrans()°¡ È£ÃâµÈ °æ¿ì ÂüÀÌ ¸®ÅϵȴÙ. SmartTrans() ºí·° ³»°¡ ¾Æ´Ï¶ó¸é °ÅÁþÀÌ ¸®ÅϵȴÙ.
Æ®·£Àè¼ÇÀ» ½ÃÀÛÇÑ´Ù. ÀÚµ¿ Ä¿¹ÔÀº »ç¿ëµÇÁö¾Ê´Â´Ù. ¼º°øÀûÀÎ °æ¿ì ÂüÀÌ ¸®ÅϵȴÙ. Æ®·£Àè¼ÇÀ» Áö¿øÇÏÁö ¸øÇÏ´Â ¸î¸î µ¥ÀÌŸº£À̽º´Â Ç×»ó °ÅÁþÀ» ¸®ÅÏÇÑ´Ù. ÀÓÀÇÀÇ ¿·ÁÁø Æ®·£Àè¼ÇÀº Á¢¼ÓÀÌ Á¾·áµÉ ¶§ ·Ñ¹éµÈ´Ù. Æ®·£Àè¼ÇÀ» Áö¿øÇÏ´Â µ¥ÀÌŸº£À̽º Áß¿¡´Â Oracle, PostgreSQL, Interbase, MSSQL, ¸î¸î MySQL ¹öÀü, DB2, Informix, SybaseµîÀÌ ÀÖ´Ù.
StartTrans()¿Í CompleteTrans()°¡ Æ®·£Àè¼ÇÀ» ó¸®ÇÏ´Â º¸´Ù ³ªÀº ¹æ¹ýÀ̸ç, ÀÌ ±â´ÉÀº ADOdb 3.40 ÀÌ»ó ¹öÀü¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù. º¸´Ù ÀÚ¼¼ÇÑ ¼³¸íÀº StartTrans() ¹®¼¸¦ º¸±â ¹Ù¶õ´Ù.
¿À·ù½Ã ½ºÅ©¸³Æ®¸¦ Á¾·áÇÏ°í ¸í½ÃÀûÀ¸·Î Æ®·£Àè¼ÇÀ» ·Ñ¹éÇϱâÀ§ÇØ ADOdb ¿À·ù 󸮱⸦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸î¸î ¹ö±×°¡ ÀÖ´Â µ¥ÀÌŸº£À̽º È®Àå ¸ðµâÀº ¸ðµç Æ®·£Àè¼ÇÀ» Ä¿¹ÔÇÏ´Â °ÍÀ¸·Î ¾Ë·ÁÁ®ÀÖÀ¸¹Ç·Î ¾ÈÀüÀ» À§ÇØ ¿À·ù 󸮱⿡¼ ¸í½ÃÀûÀ¸·Î $DB->RollbackTrans()Çϱ⸦ ¿øÇÒ ¼ö ÀÖ´Ù.
ADOdb 2.50 ÀÌ·¡·Î Æ®·£Àè¼ÇÀ» °ËÃâÇÒ ¼ö ÀÖ´Ù. $connection->transCnt°¡ 0 º¸´Ù Å«Áö °Ë»çÇÑ´Ù. ÀÌ º¯¼ö´Â BeginTrans()°¡ È£ÃâµÉ¶§¸¶´Ù Áõ°¡Çϸç, RollbackTrans() ¶Ç´Â CommitTrans()°¡ È£ÃâµÉ ¶§¸¶´Ù °¨¼ÒÇÑ´Ù.
Æ®·£Àè¼ÇÀ» ¼º°øÀûÀ¸·Î Á¾·áÇÑ´Ù. ¼º°øÇϸé ÂüÀÌ ¸®ÅϵȴÙ. µ¥ÀÌŸº£À̽º°¡ Æ®·£Àè¼ÇÀ» Áö¿øÇÏÁö ¾Ê´Â °æ¿ìµµ µ¥ÀÌŸ´Â Ç×»ó Ä¿¹ÔµÊ¹Ç·Î ÂüÀÌ ¸®Å쵃 °ÍÀÌ´Ù.
¸Å°³º¯¼ö $ok=false¸¦ Àü´ÞÇÏ¸é µ¥ÀÌŸ´Â ·Ñ¹éµÈ´Ù. BeginTrans()ÀÇ ¿¹¸¦ º¸±â¹Ù¶õ´Ù.
Æ®·£Àè¼ÇÀ» Á¾·áÇÏ°í ¸ðµç º¯°æÀ» ·Ñ¹éÇÑ´Ù. ¼º°øÇϸé ÂüÀÌ ¸®ÅϵȴÙ. Æ®·£Àè¼ÇÀ» Áö¿øÇÏÁö¾Ê´Â µ¥ÀÌŸº£À̽ºÀÇ °æ¿ì ¾î¶°ÇÑ µ¥ÀÌŸ·Î ·Ñ¹éÇÒ ¼ö ¾øÀ¸¹Ç·Î °ÅÁþÀÌ ¸®Å쵃 °ÍÀÌ´Ù.
GetAssoc($sql,$inputarr=false,$force_array=false,$first2cols=false)
ÁÖ¾îÁø ÁúÀÇ $sql¿¡´ëÇÑ ¿¬°ü ¹è¿À» ¸®ÅÏÇÑ´Ù. $inputarr·Î Ç¥½ÃµÇ´Â ¹ÙÀεù ¸Å°³º¯¼ö´Â ¿É¼ÇÀÌ´Ù. ¸¸¾à ¸®ÅÏµÈ Ä÷³ÀÇ ¼ö°¡ 2º¸´Ù Å©´Ù¸é 2Â÷¿ø ¹è¿ÀÌ ¸®ÅϵȴÙ. ·¹ÄÚµå¼ÂÀÇ Ã¹¹øÂ° Ä÷³ÀÌ ³ª¸ÓÁö Çà¿¡´ëÇÑ Å°°¡ µÈ´Ù. Ä÷³ÀÌ 2À̸é 1Â÷¿ø ¹è¿ÀÌ »ý¼ºµÇ¸ç, Ű´Â °ªÀ¸·Î Á÷Á¢ ¸ÅÇεȴÙ(°¢°¢ÀÇ °ª¿¡´ëÇØ ¹è¿ÀÌ »ý¼ºµÉ¶§ $force_array°¡ ÂüÀ¸·Î ¼³Á¤µÇÁö¾ÊÀº´Ù¸é).
·¹ÄÚµå¼Â¿¡ ´ÙÀ½°ú °°Àº µ¥ÀÌŸ¸¦ °¡Áö°í ÀÖ´Ù°í ÇÏÀÚ:
row1: Apple, Fruit, Edible
row2: Cactus, Plant, Inedible
row3: Rose, Flower, Edible
GetAssoc´Â ´ÙÀ½°ú °°Àº 2Â÷¿ø ¿¬°ü¹è¿À» »ý¼ºÇϰԵȴÙ:
Apple => array[Fruit, Edible]
Cactus => array[Plant, Inedible]
Rose => array[Flower,Edible]
¸¸¾à µ¥ÀÌŸ ÁýÇÏÀÌ ´ÙÀ½°ú °°´Ù¸é:
row1: Apple,
Fruit
row2: Cactus, Plant
row3: Rose, Flower
GetAssocÀº ´ÙÀ½°ú °°Àº 1Â÷¿ø ¿¬°ü¹è¿À» »ý¼ºÇϰԵȴÙ.($force_array==false Àΰæ¿ì):
Apple => Fruit
Cactus=>Plant
Rose=>Flower
ÇÔ¼ö ¸®ÅÏ:
¿¬°ü¹è¿ ¶Ç´Â ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì °ÅÁþ.
CacheGetAssoc([$secs2cache,] $sql,$inputarr=false,$force_array=false,$first2cols=false)
À§ÀÇ GetAssoc ÇÔ¼öÀÇ Ä³½¬ ¹öÀüÀÌ´Ù.
SQL ¹®À» ½ÇÇàÇϰí ùÇàÀÇ Ã¹¹øÂ° Çʵ带 ¸®ÅÏÇÑ´Ù. ·¹ÄÚµå¼Â°ú ³²Àº ÇàÀº ÀÚµ¿ÀûÀ¸·Î »èÁ¦µÈ´Ù. ¿À·ù°¡ ¹ß»ýÇÏ¸é °ÅÁþÀÌ ¸®ÅϵȴÙ.
SQLÀ» ½ÇÇàÇϰí ù¹øÂ° ÇàÀ» ¹è¿·Î ¸®ÅÏÇÑ´Ù. ·¹ÄÚµå¼Â°ú ³²Àº ÇàÀº ÀÚµ¿ÀûÀ¸·Î »èÁ¦µÈ´Ù. ¿À·ù°¡ ¹ß»ýÇÑ °æ¿ì °ÅÁþÀÌ ¸®ÅϵȴÙ.
SQLÀ» ½ÇÇàÇÏ°í ¸ðµç ÇàÀ» 2Â÷¿ø ¹è¿·Î ¸®ÅÏÇÑ´Ù. ·¹ÄÚµå¼ÂÀº ÀÚµ¿ÀûÀ¸·Î »èÁ¦µÈ´Ù. ¿À·ù°¡ ¹ß»ýÇÏ¸é °ÅÁþÀÌ ¸®ÅϵȴÙ.
GetCol($sql,$inputarr=false,$trim=false)
SQL ¹®À» ½ÇÇàÇϰí ù¹øÂ° Ä÷³ÀÇ ¸ðµç Ç׸ñÀ» 1Â÷¿ø ¹è¿·Î ¸®ÅÏÇÑ´Ù. ·¹ÄÚµå¼ÂÀº ÀÚµ¿ÀûÀ¸·Î »èÁ¦µÈ´Ù. ¿À·ù°¡ ¹ß»ýÇÏ¸é °ÅÁþÀÌ ¸®ÅϵȴÙ.
CacheGetOne([$secs2cache,] $sql,$inputarr=false), CacheGetRow([$secs2cache,] $sql,$inputarr=false), CacheGetAll([$secs2cache,] $sql,$inputarr=false), CacheGetCol([$secs2cache,] $sql,$inputarr=false,$trim=false)
À§ÀÇ Get* ÇÔ¼ö¿Í ºñ½ÁÇÏÁö¸¸ ·¹ÄÚµå¼ÂÀº $ADODB_CACHE_DIR µð·ºÅ丮¿¡ $secs2cache Ãʵ¿¾È ij½¬µÇ°í ½Ã¸®¾óȵȴٴ Â÷À̰¡ÀÖ´Ù. µå¹°°Ô º¯°æµÇ´Â µ¥ÀÌŸ¿¡´ëÇÑ ÁúÀÇ ¼Óµµ¸¦ ³ôÀÌÀ̱⿡ ÁÁ´Ù. $secs2cache ¸Å°³º¯¼ö´Â ¿É¼ÇÀ̶ó´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù. $secs2cache¸¦ ´©¶ôÇϸé $connection->cacheSecs(±âº»°ªÀº 3600ÃÊ ¶Ç´Â Çѽð£)ÀÇ °ªÀÌ »ç¿ëµÈ´Ù.
¹Ýº¹ÀûÀÎ ½ÇÇàÀ» À§ÇØ SQL ÁúÀǸ¦ Áغñ(ÄÄÆÄÀÏ)ÇÑ´Ù. ¹ÙÀÎµå ¸Å°³º¯¼ö´Â ?·Î Ç¥±âµÈ´Ù. oci8 µå¶óÀ̹öÀÇ °æ¿ì ÀüÅëÀûÀÎ Oracle ¹ÙÀÎµå º¯¼öÀÎ :varname·Î Ç¥±âµÈ´Ù.
¹è¿ÀÇ Ã¹¹øÂ° ¿ä¼Ò¿¡ ¿ø SQL ¹®ÀÌ Æ÷ÇÔµÈ ¹è¿À» ¸®ÅÏÇÑ´Ù. ¹è¿ÀÇ ³ª¸ÓÁö ºÎºÐÀº µå¶óÀ̹ö¿¡µû¶ó ´Ù¸£´Ù. ¿À·ù°¡ ¹ß»ýÇϰųª Prepace( )¸¦ ¿¡¹Ä·¹À̼ÇÇÏ´Â °æ¿ì ¿ø·¡ÀÇ $sql ¹®ÀÚ¿ÀÌ ¸®ÅϵȴÙ. À̰ÍÀº ¸ðµç ¿À·ù 󸮴 Execute( )¿¡ ÁýÁߵDZ⶧¹®ÀÌ´Ù.
Prepare( )´Â SQL Äõ¸®¸¦ ´Ù½Ã »ý¼ºÇÏ´Â ÇÔ¼ö(¿¹: PageExecute( )¿Í SelectLimit( ))¿Í´Â ÇÔ²² »ç¿ëÇÒ ¼ö ¾ø´Ù.
¿¹:
$stmt = $DB->Prepare('insert into table (col1,col2) values (?,?)');
for ($i=0; $i < $max; $i++)
$DB->Execute($stmt,array((string) rand(), $i));
¶ÇÇÑ ¾Æ·¡ÀÇ PrepareSP()¿Í Parameter()¸¦ º¸±â ¹Ù¶õ´Ù. ÀÌ °ÍÀº ³»ºÎÀûÀ¸·Î interbase, oci8°ú ¸î¸î ODBC-±â¹Ý µå¶óÀ̹ö¸¸ Áö¿øÇÑ´Ù. ±×¿ÜÀÇ °ÍµéÀº ¿¡¹Ä·¹À̼ǵȴÙ. ¿¡¹Ä·¹À̼ǵǴ °æ¿ì Prepare()¸¦ »ç¿ëÇÏ´Â °æ¿ì ¼º´É»ó ÀÕÁ¡Àº ¾ø´Ù.
Áß¿ä: PHPÀÇ Á¦ÇÑÀ̳ª ¹ö±×¶§¹®¿¡ ¹Ì¸® ÁغñµÈ ÁúÀǸ¦ »ç¿ëÇÒ ¶§ ¿À·ù¸¦ È®ÀÎÇÒ ¼ö ¾ø´Ù¸é Prepare()¸¦ »ç¿ëÇϱâ Àü¿¡ $ADODB_COUNTRECS = false·Î ¼³Á¤ÇÏ°í ½ÃµµÇϱ⠹ٶõ´Ù. ÀÌ·¯ÇÑ ¹®Á¦´Â ODBC¿¡¼ °üÃøµÇ¾ú´Ù.
IfNull($field, $nullReplacementValue)
´Ù¸¥ DB¿Í ȣȯµÇ´Â IFNULL ÇÔ¼ö(¿À¶óŬÀÇ NVL). ÁÖ¾îÁø µ¥ÀÌŸº£À̽º¿¡´ëÇØ $field°¡ ³ÎÀÎÁö¸¦ °Ë»çÇÏ´Â ÇÔ¼ö(¹®ÀÚ¿)¸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à ³ÎÀ̸é $nullReplacementValue·Î ¸®ÅÏµÈ °ªÀ» º¯°æÇÑ´Ù. ¿¹.
$sql = 'SELECT '.$db->IfNull('name', "'- unknown -'"). ' FROM table';
ÀÌ °ÍÀº ÇÔ¼ö°¡ ¾Æ´Ï¶ó ¼Ó¼ºÀÌ´Ù. ¸î¸î µ¥ÀÌŸº£À̽º´Â ºÎºÐ ¹®ÀÚ¿À» º¹»çÇÏ´Â ÇÔ¼ö·Î "substr"°ú "substring"¸¦ °¡Áö°í ÀÖ´Ù. ÀÌ ¼Ó¼ºÀº ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù:
$sql = "SELECT ".$db->substr."(field, $offset, $length) from table"; $rs = $db->Execute($sql);
¸ðµç µ¥ÀÌŸº£À̽º¿¡¼ substrÀÇ Ã¹¹øÂ° ¸Å°³º¯¼ö´Â ÇʵåÀ̸ç, µÎ¹øÂ°´Â ºÎºÐ ¹®ÀÚ¿ÀÇ ½ÃÀÛÀ» Ç¥½ÃÇÏ´Â ¿É¼Â(1ºÎÅÍ ½ÃÀÛ)À̰í, ¼¼¹øÂ°´Â ºÎºÐ ¹®ÀÚ¿ÀÇ ±æÀÌÀÌ´Ù.
À̰ÍÀº ÇÔ¼ö°¡ ¾Æ´Ï¶ó ¼Ó¼ºÀÌ´Ù. ÀÌ °ÍÀº 0.0~1.0 »çÀÌÀÇ ¶õ¼ö¸¦ »ý¼ºÇϴµ¥ »ç¿ëµÇ´Â SQL ¹®(¹®ÀÚ¿).
¹ÙÀÎµå º¯¼ö¸¦ ´Ù¸¥ DB¿Í ȣȯµÇ°Ô »ý¼ºÇÑ´Ù. ´ëºÎºÐÀÇ µ¥ÀÌŸº£À̽ºÀÇ °æ¿ì ¹ÙÀÎµå ¸Å°³º¯¼ö´Â "?"ÀÌ´Ù. ±×·¯³ª ¸î¸î µ¥ÀÌŸº£À̽ºÀÇ °æ¿ì À̸§À» °®´Â ¹ÙÀÎµå º¯¼ö¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦µé¾î Oracle °æ¿ì À̸§À» °®´Â ¹ÙÀÎµå º¯¼ö ":somevar"¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö·Î ¹ÙÀÎµå ¸Å°³º¯¼ö¸¦ °®´Â SQL ¹®À» ´Ù¸¥ DB¿Í ȣȯ°¡´ÉÇÏ°Ô Á¤ÀÇÇÒ ¼ö ÀÖ´Ù:
$sql = 'insert into table (col1,col2) values ('.$DB->Param('a').','.$DB->Param('b').')';
# 'insert into table (col1,col2) values (?,?)'
# ¶Ç´Â 'insert into table (col1,col2) values (:a,:b) »ý¼º'
$stmt = $DB->Prepare($sql);
$stmt = $DB->Execute($stmt,array('one','two'));
mssql°ú oci8¿¡¼ ÀúÀåµÈ ÇÁ·Î½ÃÁ®¸¦ È£ÃâÇÏ¸é¼ Á÷Á¢ ¸Å°³º¯¼ö¿Í ¸®ÅϰªÀ» ¹ÙÀεåÇÏ±æ ¿øÇÒ¶§(ƯÈ÷ LOB¸¦ ó¸®ÇÒ ¶§) PrepareSP()·Î ÀÌ ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
À§ÀÇ Prepare( )¿Í µ¿ÀÏÇÑ ¹è¿À̳ª $sql ¹®ÀÚ¿À» ¸®ÅÏÇÑ´Ù. ¸¸¾à ¸®ÅϰªÀ» ¹ÙÀεåÇÒ Çʿ䰡 ¾ø´Ù¸é ÀÌ ÇÔ¼ö ´ë½Å¿¡ Prepare¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
PrepareSP( )ÀÇ »ç¿ë¿¹´Â ¾Æ·¡ÀÇ Parameter( )À» º¸±â ¹Ù¶õ´Ù.
ÁÖÀÇ: mssql µå¶óÀ̹ö¿¡¼ ÀúÀåµÈ ÇÁ·Î½ÃÀú¸¦ Áغñ(ÄÄÆÄÀÏ)ÇÏ´Â °ÍÀº Ưº°ÇÑ ÇÔ¼ö, mssql_init( ) È£ÃâÀ» ÇÊ¿ä·Î ÇÑ´Ù. PrepareSP( )´Â ¸ðµç ´Ù¸¥ µå¶óÀ̹ö¿¡¼ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, Prepare( )¸¦ È£ÃâÇÔÀ¸·Î¼ ¿¡¹Ä·¹À̼ǵȴÙ.
Parameter($stmt, $var, $name, $isOutput=false, $maxLen = 4000, $type = false )
PrepareSP( )¸¦ »ç¿ëÇØ¼ SQL¹®À» Áغñ(ÄÄÆÄÀÏ)ÇÑ ÈÄ, ¹ÙÀÎµå ¸Å°³º¯¼ö¸¦ ¸®ÅϰªÀ̳ª Ưº°ÇÑ µ¥ÀÌŸ ó¸®(LOB)¿¡ Àû´çÇÏ°Ô Ãß°¡ÇÑ´Ù. ÇöÀç mssql°ú oci8¿¡¼¸¸ Áö¿øµÈ´Ù. ¸Å°³º¯¼ö´Â ´ÙÀ½°ú °°´Ù:
$stmt Prepare() ³ª PrepareSP()¿¡ÀÇÇØ ¸®ÅÏµÈ ¹®.
$var ¹ÙÀεåÇÒ PHP º¯¼ö. ¹Ýµå½Ã ¸ÕÀú ÃʱâÈÇØ¾ß ÇÑ´Ù!
$name ¹ÙÀεåÇÒ ÀúÀåµÈ ÇÁ·Î½ÃÀúÀÇ º¯¼ö¸í.
[$isOutput] ¸Å°³º¯¼öÀÇ ¹æÇâÀ» Áö½Ã 0/false=IN 1=OUT
2=IN/OUT. oci8 µå¶óÀ̹ö´Â ¹æÇâÀ» ÀÚµ¿ °ËÃâÇϹǷΠoci8¿¡¼´Â ¹«½ÃµÈ´Ù.
[$maxLen] ¸Å°³º¯¼öÀÇ ÃÖ´ë ±æÀÌ.
[$type] type¿¡´ëÇØ »ç¿ëÇÒ ¼ö ÀÖ´Â °ª¿¡´ëÇÑ º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸´Â php.netÀÇ mssql_bind¿Í
ocibindbyname ¹®¼¸¦ º¸±â ¹Ù¶õ´Ù.
¿¹:
# @RETVAL = SP_RUNSOMETHING @myid,@group
$stmt = $db->PrepareSP('SP_RUNSOMETHING'); # ÁÖÀÇ: ¸Å°³º¯¼ö ¸íÀº @·Î ½ÃÀÛµÇÁö ¾ÊÀ½
$db->Parameter($stmt,$id,'myid'); $db->Parameter($stmt,$group,'group',false,64); # MSSQL¿¡¼ ¸®Åϰª - RETVAL´Â ÇÁ·Î±×·¥¿¡ÀÇÇØ Á¤ÇØÁø À̸§ÀÓ $db->Parameter($stmt,$ret,'RETVAL',true);
$db->Execute($stmt);
oci8 ¿¹:
# ¿À¶óŬÀÇ °æ¿ì, Prepare¿Í PrepareSP´Â µ¿ÀÏÇÏ´Ù $stmt = $db->PrepareSP( "declare RETVAL integer; begin :RETVAL := SP_RUNSOMETHING(:myid,:group); end;"); $db->Parameter($stmt,$id,'myid'); $db->Parameter($stmt,$group,'group',false,64); $db->Parameter($stmt,$ret,'RETVAL',true); $db->Execute($stmt);
oci8°ú mssql ±¸Çö»óÀÇ À¯ÀÏÇÑ Â÷ÀÌ´Â $sqlÀÇ ¹®¹ýÀ̶ó´Â °ÍÀÌ ÁÖÀÇÇϱâ¹Ù¶õ´Ù.
mssql¿¡¼ ¸¸¾à $type ¸Å°³º¯¼ö°¡ °ÅÁþÀ¸·Î ¼³Á¤µÇ¸é $type´Â Àü´ÞµÈ PHP º¯¼öÇü¿¡µû¶ó µ¿ÀûÀ¸·Î °áÁ¤µÈ´Ù(string => SQLCHAR, boolean =>SQLINT1, integer =>SQLINT4 ¶Ç´Â float/double=>SQLFLT8).oci8¿¡¼ $type´Â OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB)°ú OCI_B_ROWID (ROWID)·Î ¼³Á¤µÉ ¼ö ÀÖ´Ù. ³ÎÀ» Àü´ÞÇϱâÀ§ÇØ $db->Parameter($stmt, $null=null, 'param')¸¦ »ç¿ëÇÑ´Ù.
¸¶Áö¸·À¸·Î oci8¿¡¼ ¹ÙÀÎµå ¸Å°³º¯¼ö´Â PrepareSP( ) ³ª Parameters¸¦ ´Ù½Ã È£ÃâÇÏÁö¾Ê°í »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ °ÍÀº mssql¿¡¼´Â ºÒ°¡´ÉÇÏ´Ù. oci8 ¿¹:
$id = 0; $i = 0;
$stmt = $db->PrepareSP( "update table set val=:i where id=:id");
$db->Parameter($stmt,$id,'id');
$db->Parameter($stmt,$i, 'i');
for ($cnt=0; $cnt < 1000; $cnt++) {
$id = $cnt;
$i = $cnt * $cnt; # works with oci8!
$db->Execute($stmt);
}
Bind($stmt, $var, $size=4001, $type=false, $name=false)
À̰ÍÀº oci8 µå¶óÀ̹ö¿¡¼¸¸ Áö¿øµÇ´Â Àú¼öÁØ ÇÔ¼öÀÌ´Ù. ¿À¶óŬ¸¸ Áö¿øÇϱ⸦ ¿øÇÏ´Â °æ¿ì°¡ ¾Æ´Ï¶ó¸é »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. º¯¼ö¸¦ ¹ÙÀεåÇϴµ¥¿¡ Parameter( ) ÇÔ¼ö¸¦ »ç¿ëÇÒ °ÍÀ» ±Ç°íÇÑ´Ù.
Bind( ) ·Î SQL ¹®³»ÀÇ º¯¼ö¸¦ ¹ÙÀεåÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÔ¼ö·Î PHP º¯¼ö¸¦ Prepare( )¸¦ »ç¿ëÇØ¼ Áغñ(ÄÄÆÄÀÏ)µÈ ¿À¶óŬ SQL¹®¿¡ Á¤ÀÇµÈ À̸§À¸·Î ¹ÙÀεå ÇÒ ¼ö ÀÖ´Ù. ¿À¶óŬÀÇ À̸§À» °®´Â º¯¼ö´Â ÄÝ·Ð(:)À¸·Î ½ÃÀ۵Ǹç, ADOdb´Â :0, :1, :2, :3 µîÀ¸·Î È£ÃâµÇ´Â À̸§À» °®´Â º¯¼ö¸¦ ¿ä±¸ÇÑ´Ù. Bind( )ÀÇ Ã¹¹øÂ° È£ÃâÀº :0·Î ¸ÅÄ¡µÇ¸ç, µÎ¹øÂ° È£ÃâÀº :1 µîÀ¸·Î È£ÃâµÈ´Ù. ¹ÙÀεùÀº Insert, Select, Update¹®ÀÇ ¼Óµµ¸¦ 100% Áõ°¡½ÃŲ´Ù.
´Ù¸¥ º¯¼ö, $size´Â µ¥ÀÌŸ ½ºÅ丮Áö¿¡´ëÇÑ ¹öÆÛ Å©±â¸¦ ¼³Á¤ÇÑ´Ù. $type´Â ¿É¼ÇÀ¸·Î ¼¼úÀÚ À¯Çü, OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB)¿Í OCI_B_ROWID (ROWID)¸¦ ³ªÅ¸³½´Ù. ¸¶Áö¸·À¸·Î ±âº»ÀûÀÎ :0, :1, µîÀÇ À̸§À» »ç¿ëÇÏ´Â ´ë½Å¿¡ $name¸¦ »ç¿ëÇØ¼ ÀÚ½ÅÀÇ ¹ÙÀÎµå ¸íÀ» Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½ ¿¹´Â 3°³ÀÇ ¹ÙÀÎµå º¯¼ö, :p1, :p2, :p3¸¦ º¸À̰í ÀÖ´Ù. ÀÌ µé º¯¼ö´Â :0, :1, :2·Î ¹ÙÀεåµÈ´Ù.
$stmt = $DB->Prepare("insert into table (col0, col1, col2) values (:0, :1, :2)");
$DB->Bind($stmt, $p1);
$DB->Bind($stmt, $p2);
$DB->Bind($stmt, $p3);
for ($i = 0; $i < $max; $i++) {
$p1 = ?; $p2 = ?; $p3 = ?;
$DB->Execute($stmt);
}
¶ÇÇÑ À̸§À» °®´Â º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù:
$stmt = $DB->Prepare("insert into table (col0, col1, col2) values (:name0, :name1, :name2)");
$DB->Bind($stmt, $p1, "name0");
$DB->Bind($stmt, $p2, "name1");
$DB->Bind($stmt, $p3, "name2");
for ($i = 0; $i < $max; $i++) {
$p1 = ?; $p2 = ?; $p3 = ?;
$DB->Execute($stmt);
}
SQL ·Î±ë°ú ŸÀÌ¹Ö ÇÔ¼ö(fnExecute¸¦ »ç¿ë)¸¦ ¼³Ä¡ÇϱâÀ§ÇØ ÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. ±×·¯¸é ¸ðµç SQL¹®ÀÌ Å×ÀÌŸº£À̽ºÀÇ adodb_logsql Å×ÀÌºí¿¡ ±â·ÏµÈ´Ù. ¸¸¾à adodb_logsql Å×À̺íÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ADOdb´Â Å×À̺íÀ» »ý¼ºÇϰԵȴÙ. ¹°·Ð »ç¿ëÀÚ´Â Å×ÀÌºí »ý¼º ±ÇÇÑÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ÀÌÀü¿¡ ±â·ÏµÈ °ªÀÌ ¸®ÅϵȴÙ(»ç¿ëÁßÀÏ °Ü¿ì Âü, ±×·¸Áö ¾ÊÀ» °æ¿ì °ÅÁþ). ´ÙÀ½Àº ¸î¸î µ¥ÀÌŸ º£À̽º¿¡´ëÇÑ DDLÀÇ ¿¹ÀÌ´Ù:
mysql: CREATE TABLE adodb_logsql ( created datetime NOT NULL, sql0 varchar(250) NOT NULL, sql1 text NOT NULL, params text NOT NULL, tracer text NOT NULL, timer decimal(16,6) NOT NULL ) postgres: CREATE TABLE adodb_logsql ( created timestamp NOT NULL, sql0 varchar(250) NOT NULL, sql1 text NOT NULL, params text NOT NULL, tracer text NOT NULL, timer decimal(16,6) NOT NULL ) mssql: CREATE TABLE adodb_logsql ( created datetime NOT NULL, sql0 varchar(250) NOT NULL, sql1 varchar(4000) NOT NULL, params varchar(3000) NOT NULL, tracer varchar(500) NOT NULL, timer decimal(16,6) NOT NULL ) oci8: CREATE TABLE adodb_logsql ( created date NOT NULL, sql0 varchar(250) NOT NULL, sql1 varchar(4000) NOT NULL, params varchar(4000), tracer varchar(4000), timer decimal(16,6) NOT NULL )»ç¿ë¿¹:
$conn->LogSQL(); // ·Î±ë Äѱâ : $conn->Execute(...); : $conn->LogSQL(false); // ·Î±ë ²ô±â # ·Î±×µÈ °á°úÀÇ ¿ä¾à Ãâ·Â $perf = NewPerfMonitor($conn); echo $perf->SuspiciousSQL(); echo $perf->ExpensiveSQL();
·Î±ëÀÇ À¯ÀÏÇÑ Á¦ÇÑÀº SQL ·Î±ëÀ» ¸·´Â ·Ñ¹éÀÌ´Ù.
¶ÇÇÑ ¼º´É °¨½Ã¸¦ º¸±â¹Ù¶õ´Ù.
fnExecute°ú fnCacheExecute ¼Ó¼º
ÀÌ µÎ°³ÀÇ ¼Ó¼ºÀ¸·Î ADOdb¿¡ÀÇÇØ 󸮵Ǵ ¸ðµç SQL¹®¿¡´ëÇØ º´¸ñÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ÀÌ ¼Ó¼ºÀ¸·Î Åë°èºÐ¼®°ú ÁúÀÇ ÀçÀÛ¼ºÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
fnExecuteÀÇ ¿¹
ÀÌ °ÍÀº fnExecuteÀ» »ç¿ëÇÏ´Â ¿¹·Î, ¸ðµç ij½¬µÈ ÁúÀÇ¿Í Ä³½¬µÇ¾ÊÀº ÁúÀǸ¦ °è»êÇϱâÀ§ÇØ ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ´Ù:
# $db ´Â Á¢¼Ó °³Ã¼
function CountExecs($db, $sql, $inputarray)
{
global $EXECS;
if (!is_array(inputarray)) $EXECS++;
# 2Â÷¿ø ÀÔ·Â ¹è¿ ó¸®
else if (is_array(reset($inputarray))) $EXECS += sizeof($inputarray);
else $EXECS++;
}
# $db´Â Á¢¼Ó°³Ã¼
function CountCachedExecs($db, $secs2cache, $sql, $inputarray)
{
global $CACHED; $CACHED++;
}
$db = NewADOConnection('mysql');
$db->Connect(...);
$db->fnExecute = 'CountExecs';
$db->fnCacheExecute = 'CountCachedExecs';
:
:
# ¸¹Àº SQL ¹® ½ÇÇàÈÄ:`
printf("<p>ÅäÅ» ÁúÀÇ=%d; ij½¬=%d</p>",$EXECS+$CACHED, $CACHED);
fnExecute ÇÔ¼ö´Â SQLÀÌ ÇØ¼®/½ÇÇàµÇ±â Àü¿¡ È£ÃâµÇ¹Ç·Î ÁúÀÇ ÀçÀÛ¼ºÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ¸¸¾à Áغñ(ÄÄÆÄÀÏ)µÈ ¹®Àå¿¡ Àü´ÞµÇ´Â °æ¿ì $sqlÀº ¹è¿ÀÌ µÈ´Ù(Prepare ÂüÁ¶). fnCacheExecute ÇÔ¼ö´Â ¸®ÅÏµÈ ·¹ÄÚµå¼ÂÀÌ Ä³½¬µÈ °æ¿ì¿¡¸¸ È£ÃâµÈ´Ù. ÇÔ¼ö ¸Å°³º¯¼ö´Â °¢°¢ Execute¿Í CacheExecute¿Í ¸ÅÄ¡µÈ´Ù. ´Ü $this(Á¢¼Ó °³Ã¼)°¡ ù¹øÂ° ¸Å°³º¯¼ö·Î Àü´ÞµÈ °æ¿ì´Â ¿¹¿Ü·Î ÇÑ´Ù.
ADOdb 3.91 ÀÌÈĹöÀü¿¡¼ fnExecuteÀÇ µ¿ÀÛÀº Á¤ÀÇµÈ ÇÔ¼ö°¡ ¸®ÅÏÇÏ´Â °ªÀÌ ¹«¾úÀ̳Ŀ¡µû¶ó ´Þ¶óÁø´Ù. ¸¸¾à °ªÀ» ¸®ÅÏÇÏÁö ¾Ê´Â´Ù¸é $sqlÀÌ ½ÇÇàµÈ´Ù. ÀÌ °ÍÀº ÁúÀÇ ÀçÀÛ¼ºÀ̳ª SQL ÁúÀÇ °è»ê¿¡ À¯¿ëÇÏ´Ù.
´Ù½Ã ¸»Çϸé Execute ÇÔ¼ö¸¦ ÀÚ½ÅÀÌ ¼³°èÇÑ ÇÔ¼ö·Î ±³Ã¼ÇÏ±æ ¿øÇÑ´Ù°í ÇÏÀÚ. ¸¸¾à ÀÌ °æ¿ì¶ó¸é ÀÚ½ÅÀÌ ¼³°èÇÑ ÇÔ¼ö´Â °ªÀ» ¸®ÅÏÇÏ¸é µÈ´Ù. °ªÀÌ ¸®ÅϵǸé ÀÌ °ªÀº ¾î¶°ÇÑ Ã³¸®µµ °ÅÄ¡Áö ¾ÊÀºÃ¼ Áï½Ã ¸®ÅϵȴÙ. ÀÌ °ÍÀº ³»ºÎÀûÀ¸·Î ADOdb¿¡¼ LogSQL( ) ÇÔ¼ö¸¦ ±¸ÇöÇϴµ¥ »ç¿ëµÇ¾ú´Ù.
»ç¿ëÇÒ ¼ö ¾øÀ½ - 1.99¿¡¼ Á¦°ÅµÊ.
$s1, $s2µîÀ» ¿¬°áÇϴµ¥ »ç¿ëµÇ´Â SQL ¹®ÀÚ¿À» »ý¼ºÇÑ´Ù. ¹®ÀÚ¿ ¿¬°áÀ» »õ¼ºÇϱâÀ§ÇØ concat_operator ÇʵåÀÇ ¹®ÀÚ¿À» »ç¿ëÇÑ´Ù. ¿¬°á ¿¬»êÀÚ°¡ »ç¿ëµÇÁö¾ÊÀ¸¸é ÀÌ ÇÔ¼ö´Â ÁßøµÈ´Ù. ¿¹: MySQL ¿¬°áµÈ ¹®ÀÚ¿À» ¸®ÅÏÇÑ´Ù.
$date¸¦ µ¥ÀÌŸº£À̽º°¡ Çã¿ëÇÏ´Â Çü½ÄÀ¸·Î º¯È¯ÇÑ´Ù. ÀÌ °ÍÀº INSERT/UPDATE¹®¿¡¼ »ç¿ëµÈ´Ù. SELECT ¹®ÀÇ °æ¿ì SQLDate¸¦ »ç¿ëÇÑ´Ù. $date ¸Å°³º¯¼ö´Â À¯´Ð½ºÀÇ Á¤¼ö ŸÀÓ½ºÅÆÇÁ³ª ISO Çü½Ä Y-m-d Àϼö ÀÖ´Ù. »ç¿ëµÇ´Â Çü½ÄÀ» À¯ÁöÇϱâÀ§ÇØ fmtDate Çʵ带 »ç¿ëÇÑ´Ù. ¸¸¾à ³ÎÀ̳ª °ÅÁþ ¶Ç´Â ''°¡ Àü´ÞµÇ¸é SQL ³Î·Î º¯È¯µÈ´Ù. ÀοëµÈ ³¯Â¥¸¦ ¸®ÅÏÇÑ´Ù.
ŸÀÓ½ºÅÆÇÁ $ts¸¦ µ¥ÀÌŸº£À̽º°¡ Çã¿ëÇÏ´Â Çü½ÄÀ¸·Î º¯È¯ÇÑ´Ù. ÀÌ °ÍÀº À¯´Ð½ºÀÇ Á¤¼ö ŸÀ̽ºÅÆÇÁ³ª ISO Çü½Ä Y-m-d H:i:s ÀÏ ¼ö ÀÖ´Ù. »ç¿ëµÇ´Â Çü½ÄÀ» À¯ÁöÇϱâÀ§ÇØ fmtTimeStamp Çʵ带 »ç¿ëÇÑ´Ù. ¸¸¾à ³ÎÀ̳ª °ÅÁþ ¶Ç´Â ''°¡ Àü´ÞµÇ¸é SQL ³Î·Î º¯È¯µÈ´Ù. ÀοëµÈ ¹®ÀÚ¿·Î ŸÀÓ½ºÅÆÇÁ¸¦ ¸®ÅÏÇÑ´Ù. qstr($s,[$magic_quotes_enabled=false])
µ¥ÀÌŸº£À̽º¿¡ Àü¼ÛµÉ ¹®ÀÚ¿À» ÀοëÇÑ´Ù. $magic_quotes_enabled ¸Å°³º¯¼ö´Â Àå³Ã³·³ º¸ÀÌÁö¸¸ POST/GET º¯¼ö¿¡¼ ÃßÃßµÈ ¹®ÀÚ¿À» ÀοëÇϰí, ÀÌ °ªÀ» get_magic_quotes_gpc()ÀÇ µÎ¹øÂ° ¸Å°³º¯¼ö·Î Àü´ÞÇÏ´Â °æ¿ì À¯¿ëÇÏ´Ù. ÀÌ °ÍÀ¸·Î º¯¼ö¸¦ µÎ¹ø ÀοëÇÏ´Â °Í(qstr¿¡ÀÇÇØ Çѹø, magic_quotes_gpcÀÇÇØ Çѹø)À» È®½ÇÈ÷ ¸·À» ¼ö ÀÖ´Ù. ¿¹. $s = $db->qstr(HTTP_GET_VARS['name'],get_magic_quotes_gpc()); ÀοëµÈ ¹®ÀÚ¿À» ¸®ÅÏÇÑ´Ù.
¹®ÀÚ¿ $s¸¦ ÀοëÇϰí, µ¥ÀÌŸº£À̽º¿¡¼ »ç¿ëµÇ´Â ÀÎ¿ë ¹®ÀÚ¸¦ Àû´çÈ÷ À̽ºÄÉÀÌÇÁÇÑ´Ù. ÀÌÀü¿¡´Â Magic Quote ¼³Á¤À» °Ë»çÇßÁö¸¸ ÀÌ °ÍÀº PEAR DB¿ÍÀÇ È£È¯¼º¶§¹®¿¡ 3.31¿¡¼ Á¦°ÅµÇ¾ú´Ù.
Update ¶Ç´Â Delete ¹®¿¡ÀÇÇØ ¿µÇâÀ» ¹ÞÀº ÇàÀÇ ¼ö¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ±â´ÉÀÌ Áö¿øµÇÁö¾Ê´Â °æ¿ì °ÅÁþÀÌ ¸®ÅϵȴÙ. interbase/firebird´Â ÇöÀç Áö¿øµÇÁö¾Ê´Â´Ù
InsertµÈ ¸¶Áö¸· ÀÚµ¿Áõ°¡ ID°¡ ¸®ÅϵȴÙ. ÀÌ ±â´ÉÀÌ Áö¿øµÇ¾Ê´Â °æ¿ì °ÅÁþÀÌ ¸®ÅϵȴÙ.
ÀÚµ¿Áõ°¡³ª °³Ã¼ ID¸¦ Áö¿øÇÏ´Â µ¥ÀÌŸº£À̽º, PostgreSQL, MySQL, MSSQL¸¸ Áö¿øµÈ´Ù. PostgreSQLÀº OID¸¦ ¸®ÅÏÇϸç, OID´Â µ¥ÀÌŸº£À̽º¸¦ ´Ù½Ã ·ÎµåÇÑ °æ¿ì º¯°æµÉ ¼ö ÀÖ´Ù.
Æ®·£Àè¼Çµ¿¾È Å×À̺í ÇàÀ» Àá±Ù´Ù. ´ÙÀ½Àº table1ÀÇ ·¹ÄÚµå $id¸¦ Àá±×´Â ¿¹ÀÌ´Ù:
db2, interbase, informix, mssql, oci8, postgres, sybase¿¡¼ Áö¿øµÈ´Ù.
¼¹ö¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸ðµç µ¥ÀÌŸº£À̽ºÀÇ ¸ñ·ÏÀ» ¹è¿·Î ¸®ÅÏÇÑ´Ù. ¸ÕÀú ¼¹ö¿¡ Á¢¼ÓÇØ¾ß Çϸç, ODBC, MySQL, ADO¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù. MetaTables($ttype = false, $showSchema = false,
$mask=false)
ÇöÀç µ¥ÀÌŸº£À̽º¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â Å×À̺í°ú ºä¸¦ ¹è¿·Î ¸®ÅÏÇÑ´Ù. ÀÌ ¹è¿¿¡´Â °¡´ÉÇÏ´Ù¸é Ä«´Þ·Î±× Å×À̺íÀº Á¦¿ÜµÈ´Ù. Å×ÀÌºí¸¸ º¸±âÀ§Çؼ´Â $db->MetaTables('TABLES')¸¦ »ç¿ëÇÑ´Ù. ºä¸¸ º¸±âÀ§Çؼ´Â $db->MetaTables('VIEWS')¸¦ »ç¿ëÇÑ´Ù. $showSchema ¸Å°³º¯¼ö´Â ÇöÀç DB2¿¡¼¸¸ µ¿ÀÛÇÑ´Ù. ÀÌ °ªÀ» ÂüÀ¸·Î ¼³Á¤ÇÏ¸é ½ºÅ°¸¶ À̸§¿¡ Å×ÀÌºí¿¡ Ãß°¡µÈ´Ù. ¿¹: "SCHEMA.TABLE".
¶ÇÇÑ ¸Å½ºÅ©¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦µé¾î $mask = 'TMP%'·Î ¼³Á¤Çϸé 'TMP'·Î ½ÃÀ۵Ǵ ¸ðµç Å×ÀÌºí¸¸ ¸®ÅϵȴÙ. ÇöÀç mssql, oci8, odbc_mssql°ú postgre+¸¸ $mask¸¦ Áö¿øÇÑ´Ù.
$tableÀÇ °¢ Ä÷³¿¡´ëÇÑ ÇϳªÀÇ ÇÊµå °³Ã¼(ADOFieldObject)ÀÇ ¹è¿À» ¸®ÅÏÇÑ´Ù. ÇöÀç Sybase´Â Å×ÀÌŸ ÇüÀÇ ÀνÄÀ» Áö¿øÇÏÁö ¾ÊÀ¸¸ç ADO´Â ¿Ã¹Ù¸¥ µ¥ÀÌŸ ŸÀÔÀ» È®ÀÎÇÒ ¼ö ¾ø´Ù(µû¶ó¼ ±âº» varcharÀ» °®´Â´Ù).
$table¿¡´ëÇÑ ÄÄ·³¸íÀÇ ¹è¿À» ¸®ÅÏÇÑ´Ù.
ADOConnection À¯Æ¿¸®Æ¼ ÇÔ¼ö
$DB->StartTrans();
$DB->RowLock("table1","rowid=$id");
$DB->Execute($sql1);
$DB->Execute($sql2);
$DB->CompleteTrans();
$tableÀÇ ÇÁ¶óÀ̸Ӹ® Ű Ä÷³ÀÇ À̸§À» ¹è¿·Î ¸®ÅÏÇÑ´Ù. ÇöÀç mysql, odbc(db2, odbc_mssql Æ÷ÇÔ), mssql, postgres, interbase/firebird, oci8 ¿¡ÀÇÇØ Áö¿øµÈ´Ù.
µÎ°³ÀÇ ¿ä¼Ò, '¼³¸í'°ú '¹öÀü'À» Æ÷ÇÔÇÏ´Â ¹è¿À» ¸®ÅÏÇÑ´Ù. '¼³¸í'Àº µ¥ÀÌŸº£À̽º¿¡´ëÇÑ ¼³¸íÀ» Æ÷ÇÔÇϰí ÀÖ´Ù. '¹öÀü'Àº º»ÁúÀûÀ¸·Î ¹öÀü ¹øÈ£¸¦ °¡Áö°í ÀÖ´Ù(À̶ÇÇÑ ¹®ÀÚ¿ÀÌ´Ù).
MetaForeignKeys($table, $owner=false, $upper=false)
¿Ü·¡Å°ÀÇ ¿¬°ü¹è¿À» ¸®ÅÏÇϰųª Áö¿øµÇÁö¾Ê´Â °æ¿ì °ÅÁþÀ» ¸®ÅÏÇÑ´Ù. ¿¹¸¦µé¾î Employee Å×À̺íÀº dept_table.deptid¸¦ Áö½ÃÇÏ´Â ¿Ü·¡Å°, employee.deptkey¸¦ °¡Áö°í ÀÖ°í employee.posn=posn_table.postionid¿Í employee.poscategory=posn_table.category ¶ó¸é $conn->MetaForeignKeys('employee')´Â ´ÙÀ½ °á°ú¸¦ ¸®ÅÏÇÑ´Ù
Ãß°¡ÀûÀÎ ½ºÅ°¸¶³ª ¼ÒÀ¯ÁÖ´Â $owner¿¡¼ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¸¸¾à $upper°¡ ÂüÀ̸é Å×ÀÌºí ¸í(¹è¿ÀÇ Å°)Àº ´ë¹®ÀÚ°¡ µÈ´Ù.
SQL ¹®ÀÌ ADOConnection->Execute($sql)¿¡ÀÇÇØ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¸é ADORecordSet °³Ã¼°¡ ¸®ÅϵȴÙ. ÀÌ °³Ã¤´Â °¡»ó Ä¿¼¸¦ Æ÷ÇÏÇϰí ÀÖÀ¸¹Ç·Î Çà¿¡¼ ÇàÀ¸·Î À̵¿ÇÒ ¼ö ÀÖÀ¸¸ç, Ä÷³°ú Ä÷³ ŸÀÔ¿¡´ëÇÑ Á¤º¸¸¦ ±¸ÇÒ ¼ö ÀÖ°í º¸Á¶ ÇÔ¼ö·Î »ç¿ëÀÚ¿¡°Ô º¸¿©Áú °á°ú¸¦ ó¸®ÇÒ ¼öµµ ÀÖ´Ù. fields: ÇöÀç ÇàÀ» Æ÷ÇÔÇÏ´Â ¹è¿. ÀÌ °ÍÀº ¿¬°ü¹è¿ÀÌ ¾Æ´Ï¸ç, 0¿¡¼ºÎÅÍ columns-1±îÁö ¹øÈ£·Î ÂüÁ¶ÇÒ ¼ö ÀÖ´Â ¹è¿ÀÌ´Ù. ¶ÇÇÑ ¿¬°ü¹è¿Ã³·³ µ¿ÀÛÇÏ´Â ÇÔ¼ö Fields¸¦ º¸±â ¹Ù¶õ´Ù dataProvider: µ¥ÀÌŸº£À̽º ¿¬°á¿¡ »ç¿ëµÈ ¸ÞÄ«´ÏÁò. ÀϹÝÀûÀ¸·Î odbc ³ª ado¸¦ »ç¿ëÇÏ´Â °æ¿ì¸¦ Á¦¿ÜÇϰí native·Î ¼³Á¤µÈ´Ù. blobSize: Blob(Blob´Â TEXTAREA ű׿¡¼ »ç¿ëµÇ´Â °Í°ú°°Àº ´ë¿ë·® ¹®ÀÚ¿)·Î 󸮵DZâ ÀüÀÇ char, String, Varchar °³Ã¼ÀÇ ÃÖ´ë Å©±â. MetaType ÇÔ¼ö¸¦ º¸±â ¹Ù¶õ´Ù. sql: ÀÌ ·¹ÄÚµå¼ÂÀ» »ý¼ºÇϴµ¥ »ç¿ëµÈ SQL »óŸ¦ °¡Áö°í ÀÖ´Ù. canSeek: Move( ) ÇÔ¼ö°¡ µ¿ÀÛÇϸé ÂüÀ¸·Î ¼³Á¤µÈ´Ù. EOF: Ä¿¼°¡ ¸¶Áö¸· ·¹Äڵ带 Áö³ª¸é Âü. ADORecordSet( ) »ý¼ºÀÚ. ÀϹÝÀûÀ¸·Î ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °æ¿ì´Â ¾ø´Ù. ·¹ÄÚµå¼ÂÀ¸·ÎºÎÅÍ ¿¬°ü¹è¿À» »ý¼ºÇÑ´Ù. ÁÖÀÇ: ÀÌ ÇÔ¼ö´Â Á¢¼Ó °³Ã¼¿¡¼µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸´Â Á¢¼Ó °³Ã¼¿¡¼ ãÀ» ¼ö ÀÖ´Ù.
array(
'dept_table' => array('deptkey=deptid'),
'posn_table' => array('posn=positionid','poscategory=category')
)
ADORecordSet
ADORecordSet Fields
ADORecordSet ÇÔ¼ö
ÇöÀç Ä¿¼ À§Ä¡¿¡¼ºÎÅÍ ·¹ÄÚµåÀÇ 2Â÷¿ø ¹è¿À» ¸¸µç´Ù. ÀÌ ¹è¿Àº 0¿¡¼ºÎÅÍ $number_of_rows-1±îÁö ¹øÈ£·Î ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù. $number_of_rows°¡ Á¤ÀǵÇÁö ¾ÊÀ¸¸é EOF±îÁö ÂüÁ¶ÇÒ ¼ö ÀÖ´Ù.
ÇöÀç Ä¿¼ À§Ä¡¿¡¼ºÎÅÍ ·¹ÄÚµåÀÇ 2Â÷¿ø ¹è¿À» ¸¸µç´Ù. Microsoft ADO¿Í ȣȯÀ» À§ÇØ ¸¸µç ÇÔ¼ö·Î GetArray()¿Í µ¿ÀÏÇÑ ÇÔ¼öÀÌ´Ù.GetMenu($name, [$default_str=''], [$blank1stItem=true], [$multiple_select=false], [$size=0], [$moreAttr=''])
HTML ¸Þ´º(<select><option><option></select>)¸¦ »ý¼ºÇÑ´Ù. ·¹ÄÚµå¼ÂÀÇ Ã¹ Ä÷³(fields[0])´Â OPTION ű׷ΠÃâ·ÂµÉ ¹®ÀÚ¿ÀÌ´Ù. ·¹ÄÚµå¼ÂÀÌ Çϳª ÀÌ»óÀÇ Ä÷³À» °®´Â´Ù¸é µÎ¹øÂ° Ä÷³(fields[1])Àº À¥¼¹ö·Î Àü¼ÛµÇ´Â °ªÀ̵ȴÙ. ¸Þ´ºÀÇ À̸§Àº $name·Î ÁÙ ¼ö ÀÖ´Ù.
$default_strÀ» Á¤ÀÇÇϰí $default_str == fields[0]¶ó¸é ÀÌ Çʵ尡 ¼±ÅõȴÙ. $blank1stItemÀÌ ÂüÀ̶ó¸é ¿É¼Ç ű×ÀÇ Ã¹¹øÂ° Ç׸ñÀº ºó °ø¹éÀÌ µÈ´Ù. ¶ÇÇÑ $blank1stItem = "$value:$text"¸£ ¼³Á¤ÇÔÀ¸·Î¼ ¿É¼Ç ű×ÀÇ Ã¹¹øÂ° Ç׸ñÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
´ÙÁß ¼±Åà ¸ñ·Ï »óÀÚÀÇ °æ¿ì $Default_str¿¡ ¹è¿À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
¸ñ·Ï »óÀÚ¸¦ ¸¸µé±âÀ§ÇØ $size¿¡ 0ÀÌ ¾Æ´Ñ°ªÀ» ¼³Á¤ÇÑ´Ù(¶Ç´Â $default_str¿¡ ¹è¿À» ÁöÁ¤ÇÑ´Ù). $multiple_select°¡ ÂüÀ̸é $size Ç׸ñ¸¸ÅÀÇ ¸ñ·Ï »óÀÚ°¡ ¸¸µé¾î Áø´Ù. $size==0À̸é 5°³ÀÇ Ç׸ñÀ» °®´Â ¸ñ·Ï »óÀÚ°¡ ¸¸µé¾îÁø´Ù. ±×ÈÄ ¹è¿ÀÌ ¼¹ö·Î ¸®ÅϵȴÙ. ¸¶Áö¸·À¸·Î Javascipt³ª Styles¿Í °°Àº Ãß°¡ÀûÀÎ ¼Ó¼ºÀ» Ãß°¡ÇϱâÀ§ÇØ $moreAttr ¸¦ »ç¿ëÇÑ´Ù.
¸Þ´º ¿¹ 1: GetMenu('menu1','A',true)´Â ´ÙÀ½°ú °°Àº ¸Þ´º¸¦ »ý¼ºÇÒ °ÍÀÌ´Ù:
¿©±â¼ µ¥ÀÌŸ´Â (A,1), (B,2), (C,3)·Î ¼³Á¤µÇ¾ú´Ù. ¶ÇÇÑ ¿¹ 5¸¦ º¸±â¹Ù¶õ´Ù.
¸Þ´º ¿¹ 2: µ¿ÀÏÇÑ µ¥ÀÌŸ¿¡´ëÇØ, GetMenu('menu1',array('A','B'),false)
´Â A¿Í B°¡ ¼±ÅÃµÈ ¸Þ´º¸¦ »ý¼ºÇÒ °ÍÀÌ´Ù:
GetMenu2($name, [$default_str=''], [$blank1stItem=true], [$multiple_select=false], [$size=0], [$moreAttr=''])
ÀÌ °ÍÀº °ÅÀÇ GetMenu¿Í µ¿ÀÏÇÏÁö¸¸ $default_strÀÌ fields[1](¿É¼Ç ű×ÀÇ °ª)°ú ¸ÅÄ¡µÈ´Ù´Â °ÍÀÌ ´Ù¸£´Ù.
¸Þ´º ¿¹ 3: ¸Þ´º ¿¹ 2¿¡¼ ÁÖ¾îÁø µ¥ÀÌŸ, GetMenu2('menu1',array('1','2'),false) ´Â ¸Þ´º ¿¹ 2¿¡¼ ¼±ÅÃµÈ A¿Í B°¡ ¼±ÅÃµÈ ¸Þ´º°¡ »ý¼ºµÈ´Ù. ±×·¯³ª ÀÌ ¹ø¿¡ ¼±Åà ±âÁØÀº 2¹øÂ° Ä÷³(À¥¼¹ö·Î ¸®ÅϵǴ °ª)ÀÌ´Ù.
³¯Â¥ ¹®ÀÚ¿ $strÀ» ´Ù¸¥ Çü½ÄÀ¸·Î º¯È¯ÇÑ´Ù. ³¯Â¥ Çü½ÄÀº Y-m-d ¶Ç´Â À¯´Ð½º ŸÀÓ½ºÅÆÇÁ Çü½ÄÀÌ´Ù. ±âº» $fmt´Â Y-m-d ÀÌ´Ù.
ŸÀÓ½ºÅÆÇÁ ¹®ÀÚ¿ $str¸¦ ´Ù¸¥ Çü½ÄÀ¸·Î º¯È¯ÇÑ´Ù. ŸÀÓ½ºÅÆÇÁ Çü½ÄÀº '2002-02-28 23:00:12'¿¡¼Ã³·³ Y-m-d H:i:sÀ̰ųª À¯´Ð½º ŸÀÓ½ºÅÆÇÁ Çü½ÄÀÌ´Ù. UserTimeStamp´Â $strÀ» ÇØ¼®ÇϱâÀ§ÇØ UnixTimeStampÀ» È£ÃâÇϸç, $fmt¸¦ Á¤ÀÇÇÏÁö¾ÊÀº °æ¿ì ±âº»°ª Y-m-d H:i:s°¡ µÈ´Ù.
³¯Â¥ ¹®ÀÚ¿ $str¸¦ ÇØ¼®Çϰí À¯´Ð½º mktime Çü½Ä(¿¹: 1970³â 1¿ù 1ÀϺÎÅÍ ÇöÀç±îÁö¸¦ ÃʷΠȯ»êÇÑ ¼ýÀÚ)À¸·Î ¸®ÅÏÇÑ´Ù. ³¯Â¥´Â Y-m-d H:i:s Çü½ÄÀÏ °ÍÀÌ´Ù(¿¹¿Ü: Sybase¿Í Microsoft SQL ¼¹ö). ¿©±â¼ M d Y Çü½Ä ¶ÇÇÑ »ç¿ëÇÒ ¼ö ÀÖ´Ù(3±ÛÀڷΠǥÇöµÇ´Â ¿ù ¹®ÀÚ¿Àº Àü¿ª º¯¼ö(Áö¿ªÈ¿¡ ÇÊ¿äÇÑ)¿¡ÀÇÇØ Á¦¾îµÈ´Ù).
ÀÌ ÇÔ¼ö´Â ADORecordSet°ú ADOConnection¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù(1.91ÀÌ»ó).
ŸÀÓ½ºÅÆÇÁ ¹®ÀÚ¿ $str¸¦ ÇØ¼®Çϰí À¯´Ð½º mktime Çü½Ä(¿¹: 1970³â 1¿ù 1ÀϺÎÅÍ ÇöÀç±îÁö¸¦ ÃʷΠȯ»êÇÑ ¼ýÀÚ)À¸·Î ¸®ÅÏÇÑ´Ù. ³¯Â¥´Â "Y-m-d, H:i:s" (1970-12-24, 00:00:00) ³ª "Y-m-d H:i:s" (1970-12-24 00:00:00) ³ª "YmdHis" (19701225000000)ÀÏ °ÍÀÌ´Ù(¿¹¿Ü: Sybase¿Í Microsoft SQL ¼¹ö). ¿©±â¼ "M d Y h:i:sA" (Dec 25 1970 00:00:00AM) ¶ÇÇÑ Çã¿ëµÈ´Ù(3±ÛÀڷΠǥÇöµÇ´Â ¿ù ¹®ÀÚ¿Àº Àü¿ª º¯¼ö(Áö¿ªÈ¿¡ ÇÊ¿äÇÑ)¿¡ÀÇÇØ Á¦¾îµÈ´Ù).
ADORecordSet°ú ADOConnection ¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÔ¼ö(1.91ÀÌ»ó)
OffsetDate($dayFraction, $basedate=false)
$basedate¿¡´ëÇÑ °ú°Å/¹Ì·¡ÀÇ ³¯Â¥¸¦ °è»êÇϱâÀ§ÇÑ SQL ÇÔ¼ö(¹®ÀÚ¿)À» ¸®ÅÏÇÑ´Ù. $basedate°¡ Á¤ÀǵÇÁö ¾ÊÀ¸¸é ÇöÀç ³¯Â¥°¡ »ç¿ëµÈ´Ù. Execute()¿¡ Àü´ÞµÉ ¶§ °è»êÀ» ¼öÇàÇÏ´Â SQL ¹®ÀÚ¿ÀÌ ¸®ÅϵȴÙ.
¿¹¸¦µé¾î, ¿À¶óŬ¿¡¼ ¿À´ÃºÎÅÍ 2.5ÀÏ ÈÄÀÇ ³¯Â¥¿Í ½Ã°£À» ã±âÀ§ÇØ ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù:
# Áö±Ý ºÎÅÍ ÇÑÁÖÀÇ ³¯Â¥¸¦ °¡Á®¿È $fld = $conn->OffsetDate(7); // "(trunc(sysdate)+7")¸¦ ¸®ÅÏ
# ÇöÀç ÀϽ÷κÎÅÍ 60½Ã°£ Áö³ ³¯Â¥¿Í ½Ã°£À» °¡Á®¿È
$fld = $conn->OffsetDate(2.5, $conn->sysTimeStamp); // "(sysdate+2.5)"°¡ ¸®ÅϵÊ
$conn->Execute("UPDATE TABLE SET dodate=$fld WHERE ID=$id");
ÀÌ ÇÔ¼ö´Â mysql, mssql, oracle, oci8°ú postgresql µå¶óÀ̹ö¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù(2.13 ÀÌ»ó). ³¯Â¥ °è»êÀ» ¼öÇàÇÒ ¼ö ÀÖ´Â ´Ù¸¥ µå¶óÀ̹ö¿Íµµ µ¿ÀÛÇÒ ¼ö ÀÖ´Ù.
SQLDate($dateFormat, $basedate=false)
³¯Â¥³ª ³¯Â¥ Ä÷³ $basedate¸¦ Çü½Äº¯È¯ÇÒ ¼ö ÀÖ´Â µ¥ÀÌŸº£À̽º °íÀ¯ÀÇ SQL ÇÔ¼ö(¹®ÀÚ¿)¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ °ÍÀº SELECT ¹®¿¡¼ »ç¿ëµÈ´Ù. INSERT/UPDATE ¹®ÀÇ °æ¿ì DBDate¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼öÀÇ ³¯Â¥Çü½Ä, $dateFormat´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇϸç, Áö¿øµÇ´Â °ªÀº ´ÙÀ½°ú °°´Ù:Y: 4 ÀÚ¸® ³âµµ Q: ºÐ±â (1-4) m: ¿ù (01-12) d: ÀÏ (01-31) H: 24½Ã (00-23) h: 12½Ã (1-12) i: ºÐ (00-59) s: ÃÊ (00-60) A: AM/PM Áö½Ã±â
ÀÌ¿ÜÀÇ ¸ðµç ´Ù¸¥ ±ÛÀÚ´Â ¹®Àڷμ 󸮵ȴÙ. ¶ÇÇÑ ±ÛÀÚ¸¦ À̽ºÄÉÀÌÇÁÇϱâÀ§ÇØ \¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. mysql, postgresql, mssql, oci8°ú DB2¸¦ Æ÷ÇÔÇÑ ¸î¸î µ¥ÀÌŸº£À̽º¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
ÀÌ ÇÔ¼ö´Â ´Ù¸¥ DB¿Í ȣȯ °¡´ÉÇÑ SQL ¹®(³¯Â¥·Î GROUP BYÇÏ´Â)À» ¾²´Âµ¥ À¯¿ëÇÏ´Ù. ´ÙÀ½ ¿¹´Â ºÐ±âº°·Î ÆÈ¸° »óǰÀÇ ÃÑ °¡°ÝÀ» Ãâ·ÂÇÏ´Â ¿¹ÀÌ´Ù(³¯Â¥´Â postdate¶ó´Â Çʵ忡 ÀúÀåµÈ´Ù).
$sqlfn = $db->SQLDate('Y-\QQ','postdate'); # postdate¸¦ 2002-Q1·Î º¯È¯ÇÏ´Â SQL ¹®À» °¡Á®¿È
$sql = "SELECT $sqlfn,SUM(cogs) FROM table GROUP BY $sqlfn ORDER BY 1 desc";
³»ºÎ Ä¿¼¸¦ ´ÙÀ½ÇàÀ¸·Î À̵¿ÇÑ´Ù. $this->fields ¹è¿Àº ÀÚµ¿ÀûÀ¸·Î °»½ÅµÈ´Ù. Ä¿¼¸¦ À̵¿ÇÒ ¼ö ¾øÀ¸¸é(ÀϹÝÀûÀ¸·Î EOF¿¡ µµ´ÞÇÑ °æ¿ì), °ÅÁþÀÌ ¸®ÅϵǸç, ±×·¸Áö ¾ÊÀ¸¸é ÂüÀÌ ¸®ÅϵȴÙ.
¸¸¾à EOF¿¡ µµ´ÞÇϸé $this->fields ¹è¿Àº °ÅÁþÀ¸·Î ¼³Á¤µÈ´Ù(ÀÌ °ÍÀº ADOdb 3.30 ÀÌÈÄÀÇ ¹öÀü¿¡¼¸¸ ±¸ÇöµÇ¾ú´Ù.) 3.30 ÀÌÀü ¹öÀüÀÇ °æ¿ì $this->fields°¡ EOF¿¡ µµ´ÞÇϸé Àü¿ªº¯¼ö $ADODB_COMPAT_FETCH°¡ ÂüÀ¸·Î ¼³Á¤µÈ´Ù.
¿¹:
$rs = $db->Execute($sql);
if ($rs)
while (!$rs->EOF) {
ProcessArray($rs->fields);
$rs->MoveNext();
}
³»ºÎ Ä¿¼¸¦ ÁöÁ¤µÈ Çà $toÀ¸·Î À̵¿ÇÑ´Ù. ÇàÀº 0ÇàºÎÅÍ ½ÃÀ۵ȴÙ. Áï, 0Àº ùÇàÀ» ³ªÅ¸³½´Ù. fields ¹è¿Àº ÀÚµ¿ÀûÀ¸·Î °»½ÅµÈ´Ù. ³»ºÎÀûÀ¸·Î À̵¿À» Áö¿øÇÏÁö¾Ê´Â µ¥ÀÌŸº£À̽ºÀÇ °æ¿ì ADOdb´Â Àü¹æ À̵¿À» ½Ã¹Ä·¹ÀÌÆ®ÇÑ´Ù. ¸î¸î µ¥ÀÌŸº£À̽º´Â ÈĹæ À̵¿À» Áö¿øÇÏÁö¾Ê