POD£¨PHP Data Object£©À©Õ¹ÔÚPHP5ÖмÓÈ룬PHP6Öн«Ä¬ÈÏʶÓÃPDOÁ¬½ÓÊý¾Ý¿â£¬ËùÓзÇPDOÀ©Õ¹½«»áÔÚPHP6±»´ÓÀ©Õ¹ÖÐÒÆ³ý¡£¸ÃÀ©Õ¹ÌṩPHPÄÚÖÃÀà PDOÀ´¶ÔÊý¾Ý¿â½øÐзÃÎÊ£¬²»Í¬Êý¾Ý¿âʹÓÃÏàͬµÄ·½·¨Ãû£¬½â¾öÊý¾Ý¿âÁ¬½Ó²»Í³Ò»µÄÎÊÌâ¡£
ÐÔÄÜ¡£PDO ´ÓÒ»¿ªÊ¼¾ÍÎüÈ¡ÁËÏÖÓÐÊý¾Ý¿âÀ©Õ¹³É¹¦ºÍʧ°ÜµÄ¾Ñé½Ìѵ¡£ÒòΪ PDO µÄ´úÂëÊÇȫеģ¬ËùÒÔÎÒÃÇÓлú»áÖØÐ¿ªÊ¼Éè¼ÆÐÔÄÜ£¬ÒÔÀûÓà PHP 5 µÄ×îÐÂÌØÐÔ¡£
ÄÜÁ¦¡£PDO Ö¼ÔÚ½«³£¼ûµÄÊý¾Ý¿â¹¦ÄÜ×÷Ϊ»ù´¡Ìṩ£¬Í¬Ê±Ìṩ¶ÔÓÚ RDBMS ¶ÀÌØ¹¦Äܵķ½±ã·ÃÎÊ¡£
¼òµ¥¡£PDO Ö¼ÔÚʹÄúÄܹ»ÇáËÉʹÓÃÊý¾Ý¿â¡£API ²»»áÇ¿ÐнéÈëÄúµÄ´úÂ룬ͬʱ»áÇå³þµØ±íÃ÷ÿ¸öº¯Êýµ÷ÓõĹý³Ì¡£
ÔËÐÐʱ¿ÉÀ©Õ¹¡£PDO À©Õ¹ÊÇÄ£¿é»¯µÄ£¬Ê¹ÄúÄܹ»ÔÚÔËÐÐʱΪÄúµÄÊý¾Ý¿âºó¶Ë¼ÓÔØÇý¶¯³ÌÐò£¬¶ø²»±ØÖØÐ±àÒë»òÖØÐ°²×°Õû¸ö PHP ³ÌÐò¡£ÀýÈ磬PDO_OCI À©Õ¹»áÌæ´ú PDO À©Õ¹ÊµÏÖ Oracle Êý¾Ý¿â API¡£»¹ÓÐһЩÓÃÓÚ MySQL¡¢PostgreSQL¡¢ODBC ºÍ Firebird µÄÇý¶¯³ÌÐò£¬¸ü¶àµÄÇý¶¯³ÌÐòÉÐÔÚ¿ª·¢¡£
¡ö°²×°PDO
ÎÒÕâÀïÊÇWINDOWSÏ¿ª·¢ÓõÄPDOÀ©Õ¹£¬ÒªÊÇÄãÒªÔÚLinuxϰ²×°ÅäÖã¬Çëµ½±ðµÄµØ·½Ñ°ÕÒ¡£
°æ±¾ÒªÇó£º
php5.1ÒÔ¼°ÒÔºó°æ±¾µÄ³ÌÐò°üÀïÒѾ´øÁË£»
php5.0.xÔòÒªµ½pecl.php.netÏÂÔØ£¬·Åµ½ÄãµÄÀ©Õ¹¿â£¬¾ÍÊÇPHPËùÔÚµÄÎļþ¼ÐµÄextÎļþ¼ÐÏ£»
ÊÖ²áÉÏ˵5.0֮ǰµÄ°æ±¾²»ÄÜÔËÐÐPDOÀ©Õ¹¡£
ÅäÖãº
ÐÞ¸ÄÄãµÄphp.iniÅäÖÃÎļþ,ʹËüÖ§³Öpdo.£¨php.iniÕâ¸ö¶«Î÷ûÓÐŪ¶®µÄ»°£¬ÏÈŪÇå³þ£¬ÒªÐ޸ĵ÷ÓÃÄãµÄphpinfo()º¯ÊýËùÏÔʾµÄÄǸöphp.ini£©
°Ñ
extension=php_pdo.dllÇ°ÃæµÄ·ÖºÅÈ¥µô£¬·ÖºÁÊÇphpÅäÖÃÎļþ×¢ÊÍ·ûºÅ,Õâ¸öÀ©Õ¹ÊDZØÐëµÄ¡£
ÍùÏ»¹ÓÐ
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_informix.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
¸÷¸÷À©Õ¹Ëù¶ÔÓ¦µÄÊý¾Ý¿âÊÇ£º
| Driver name |
Supported databases |
| PDO_DBLIB |
FreeTDS / Microsoft SQL Server / Sybase |
| PDO_FIREBIRD |
Firebird/Interbase 6 |
| PDO_INFORMIX |
IBM Informix Dynamic Server |
| PDO_MYSQL |
MySQL 3.x/4.x |
| PDO_OCI |
Oracle Call Interface |
| PDO_ODBC |
ODBC v3 (IBM DB2, unixODBC and win32 ODBC) |
| PDO_PGSQL |
PostgreSQL |
| PDO_SQLITE |
SQLite 3 and SQLite 2 |
ÄãҪʹÓÃÄÄÖÖÊý¾Ý¿â£¬Ö»Òª°ÑÏàÓ¦µÄÀ©Õ¹Ç°µÄ×¢ÊÍ·ûºÅ";"È¥µô¾Í¿ÉÒÔÁË¡£
¡öʹÓÃPDO
ÎÒÕâÀï¼ÙÉèÄãÒѾװºÃmysqlÁË£¬ÒªÊÇûװµÄ»°£¬Âé·³ÏÈÏë°ì·¨×°ÉÏ£¬ÎÒµÄÊÇmysql5.0.22,ºÚҹ·ÈËÓõÄÊÇMySQL 4.0.26Ò²¿ÉÒÔÓá£
¡ïÊý¾Ý¿âµÄÁ¬½Ó£º
ÎÒÃÇͨ¹ýÏÂÃæµÄÀý×ÓÀ´·ÖÎöPDOÁ¬½ÓÊý¾Ý¿â£¬
|
<?php
$dbms='mysql'; //Êý¾Ý¿âÀàÐÍ Oracle ÓÃODI,¶ÔÓÚ¿ª·¢ÕßÀ´Ëµ£¬Ê¹Óò»Í¬µÄÊý¾Ý¿â£¬Ö»Òª¸ÄÕâ¸ö£¬²»ÓüÇסÄÇô¶àµÄº¯ÊýÁË
$host='localhost'; //Êý¾Ý¿âÖ÷»úÃû
$dbName='test'; //ʹÓõÄÊý¾Ý¿â
$user='root'; //Êý¾Ý¿âÁ¬½ÓÓû§Ãû
$pass=''; //¶ÔÓ¦µÄÃÜÂë
$dsn="$dbms:host=$host;dbname=$dbName";
//
try {
$dbh = new PDO($dsn, $user, $pass); //³õʼ»¯Ò»¸öPDO¶ÔÏ󣬾ÍÊÇ´´½¨ÁËÊý¾Ý¿âÁ¬½Ó¶ÔÏó$dbh
echo "Á¬½Ó³É¹¦<br/>";
/*Ä㻹¿ÉÒÔ½øÐÐÒ»´ÎËÑË÷²Ù×÷
foreach ($dbh->query('SELECT * from FOO') as $row) {
print_r($row); //Äã¿ÉÒÔÓà echo($GLOBAL); À´¿´µ½ÕâЩֵ
}
*/
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
//ĬÈÏÕâ¸ö²»Êdz¤Á¬½Ó£¬Èç¹ûÐèÒªÊý¾Ý¿â³¤Á¬½Ó£¬ÐèÒª×îºó¼ÓÒ»¸ö²ÎÊý£ºarray(PDO::ATTR_PERSISTENT => true) ±ä³ÉÕâÑù£º
$db = new PDO($dsn, $user, $pass, array(PDO::ATTR_PERSISTENT => true));
?>
|
¡ïÊý¾Ý¿â²éѯ£º
ÉÏÃæÎÒÃÇÒѾ½øÐÐÁËÒ»´Î²éѯ£¬ÎÒÃÇ»¹¿ÉÒÔʹÓÃÈçϵIJéѯ£º
|
<?php
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER); //ÉèÖÃÊôÐÔ
$rs = $db->query("SELECT * FROM foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr = $rs->fetchAll();
print_r($result_arr);
?>
|
ÒÔÉÏÒòΪÓõ½setAttribute()·½·¨£¬·ÅÉÏÄÇÁ½¸ö²ÎÊý£¬°Ñ×Ö¶ÎÃûÇ¿ÖÆ×ª»»³É´óд¡£ÏÂÃæÁгö¶àÓÐPDO::setAttribute()µÄ²ÎÊý£º
-
PDO::ATTR_CASE: Ç¿ÖÆÁÐÃû±ä³ÉÒ»ÖÖ¸ñʽ£¬ÏêϸÈçÏÂ(µÚ¶þ¸ö²ÎÊý)£º
-
PDO::CASE_LOWER: Ç¿ÖÆÁÐÃûÊÇСд.
-
PDO::CASE_NATURAL: ÁÐÃû°´ÕÕÔʼµÄ·½Ê½
-
PDO::CASE_UPPER: Ç¿ÖÆÁÐÃûΪ´óд.
-
PDO::ATTR_ERRMODE: ´íÎóÌáʾ.
-
PDO::ERRMODE_SILENT: ²»ÏÔʾ´íÎóÐÅÏ¢£¬Ö»ÏÔʾ´íÎóÂë.
-
PDO::ERRMODE_WARNING: ÏÔʾ¾¯¸æ´íÎó.
-
PDO::ERRMODE_EXCEPTION: Å׳öÒì³£.
-
PDO::ATTR_ORACLE_NULLS (²»½ö½öÊÇORACLEÓÐЧ£¬±ðµÄÊý¾Ý¿âÒ²ÓÐЧ): £©Ö¸¶¨Êý¾Ý¿â·µ»ØµÄNULLÖµÔÚphpÖжÔÓ¦µÄÊýÖµ¡£
-
PDO::ATTR_STRINGIFY_FETCHES: Convert numeric values to strings when fetching. Requires bool.
-
PDO::ATTR_STATEMENT_CLASS: Set user-supplied statement class derived from PDOStatement. Cannot be used with persistent PDO instances. Requires array(string classname, array(mixed constructor_args)).
-
PDO::ATTR_AUTOCOMMIT (available in OCI, Firebird and MySQL): Whether to autocommit every single statement.
-
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (available in MySQL): Use buffered queries.
Àý×ÓÖеÄ$rs->setFetchMode(PDO::FETCH_ASSOC);ÊÇPDOStatement::setFetchMode()£¬¶Ô·µ»ØÀàÐ͵ÄÉùÃ÷¡£
ÓÐÈçÏ£º
PDO::FETCH_ASSOC -- ¹ØÁªÊý×éÐÎʽ
PDO::FETCH_NUM -- Êý×ÖË÷ÒýÊý×éÐÎʽ
PDO::FETCH_BOTH -- Á½ÕßÊý×éÐÎʽ¶¼ÓУ¬ÕâÊÇȱʡµÄ
PDO::FETCH_OBJ -- °´ÕÕ¶ÔÏóµÄÐÎʽ£¬ÀàËÆÓÚÒÔǰµÄ mysql_fetch_object()
¸ü¶à·µ»ØÀàÐÍÉùÃ÷(PDOStatement::·½·¨Ãû)¿´Êֲᡣ
¡ï²åÈ룬¸üУ¬É¾³ýÊý¾Ý£¬
|
$db->exec("DELETE FROM `xxxx_menu` where mid=43");
|
¼òµ¥µÄ×ܽáÒ»ÏÂÉÏÃæµÄ²Ù×÷:
²éѯ²Ù×÷Ö÷ÒªÊÇPDO::query()¡¢PDO::exec()¡¢PDO::prepare()¡£
PDO::query()Ö÷ÒªÊÇÓÃÓÚÓмǼ½á¹û·µ»ØµÄ²Ù×÷£¬ÌرðÊÇSELECT²Ù×÷£¬
PDO::exec()Ö÷ÒªÊÇÕë¶ÔûÓнá¹û¼¯ºÏ·µ»ØµÄ²Ù×÷£¬±ÈÈçINSERT¡¢UPDATE¡¢DELETEµÈ²Ù×÷£¬Ëü·µ»ØµÄ½á¹ûÊǵ±Ç°²Ù×÷Ó°ÏìµÄÁÐÊý¡£
PDO::prepare()Ö÷ÒªÊÇÔ¤´¦Àí²Ù×÷£¬ÐèҪͨ¹ý$rs->execute()À´Ö´ÐÐÔ¤´¦ÀíÀïÃæµÄSQLÓï¾ä£¬Õâ¸ö·½·¨¿ÉÒ԰󶨲ÎÊý£¬¹¦ÄܱȽÏÇ¿´ó£¬²»ÊDZ¾ÎÄÄܹ»¼òµ¥ËµÃ÷°×µÄ£¬´ó¼Ò¿ÉÒԲο¼ÊÖ²áºÍÆäËûÎĵµ¡£
»ñÈ¡½á¹û¼¯²Ù×÷Ö÷ÒªÊÇ£ºPDOStatement::fetchColumn()¡¢PDOStatement::fetch()¡¢PDOStatement::fetchALL()¡£
PDOStatement::fetchColumn() ÊÇ»ñÈ¡½á¹ûÖ¸¶¨µÚÒ»Ìõ¼Ç¼µÄij¸ö×ֶΣ¬È±Ê¡ÊǵÚÒ»¸ö×ֶΡ£
PDOStatement::fetch() ÊÇÓÃÀ´»ñȡһÌõ¼Ç¼£¬
PDOStatement::fetchAll()ÊÇ»ñÈ¡ËùÓмǼ¼¯µ½Ò»¸öÖУ¬»ñÈ¡½á¹û¿ÉÒÔͨ¹ýPDOStatement::setFetchModeÀ´ÉèÖÃÐèÒª½á¹û¼¯ºÏµÄÀàÐÍ¡£
ÁíÍâÓÐÁ½¸öÖܱߵIJÙ×÷£¬Ò»¸öÊÇPDO::lastInsertId()ºÍPDOStatement::rowCount()¡£PDO::lastInsertId()ÊÇ·µ»ØÉϴβåÈë²Ù×÷£¬Ö÷¼üÁÐÀàÐÍÊÇ×ÔÔöµÄ×îºóµÄ×ÔÔöID¡£
PDOStatement::rowCount()Ö÷ÒªÊÇÓÃÓÚPDO::query()ºÍPDO::prepare()½øÐÐDELETE¡¢INSERT¡¢UPDATE²Ù×÷Ó°ÏìµÄ½á¹û¼¯£¬¶ÔPDO::exec()·½·¨ºÍSELECT²Ù×÷ÎÞЧ¡£
¡ïÊÂÎñºÍ×Ô¶¯Ìá½»
ÖÁ´Ë£¬ÄúÒѾͨ¹ý PDO Á¬½Óµ½ÁË mysql£¬ÔÚ·¢³ö²éѯ֮ǰ£¬ÄúÓ¦¸ÃÀí½â PDO ÊÇÈçºÎ¹ÜÀíÊÂÎñµÄ¡£Èç¹û֮ǰûÓнӴ¥¹ýÊÂÎñ£¬ÄÇôÊ×ÏÈÒªÖªµÀÊÂÎñµÄ 4 ¸öÌØÕ÷£ºÔ×ÓÐÔ£¨Atomicity£©¡¢Ò»ÖÂÐÔ£¨Consistency£©¡¢¶ÀÁ¢ÐÔ£¨Isolation£©ºÍ³Ö¾ÃÐÔ£¨Durability£©£¬¼´ ACID¡£ÓÃÍâÐÐÈ˵Ļ°Ëµ£¬¶ÔÓÚÔÚÒ»¸öÊÂÎñÖÐÖ´ÐеÄÈκι¤×÷£¬¼´Ê¹ËüÊÇ·Ö½×¶ÎÖ´Ðеģ¬Ò²Ò»¶¨¿ÉÒÔ±£Ö¤¸Ã¹¤×÷»á°²È«µØÓ¦ÓÃÓÚÊý¾Ý¿â£¬²¢ÇÒÔÚ¹¤×÷±»Ìύʱ£¬²» »áÊܵ½À´×ÔÆäËûÁ¬½ÓµÄÓ°Ïì¡£ÊÂÎñÐÔ¹¤×÷¿ÉÒÔ¸ù¾ÝÇëÇó×Ô¶¯³·Ïú£¨¼ÙÉèÄú»¹Ã»ÓÐÌá½»Ëü£©£¬ÕâʹµÃ½Å±¾ÖеĴíÎó´¦Àí±äµÃ¸ü¼ÓÈÝÒס£
ÊÂÎñͨ³£ÊÇͨ¹ý°ÑÒ»Åú¸ü¸Ä»ýÐîÆðÀ´¡¢Ê¹Ö®Í¬Ê±ÉúЧ¶øÊµÏֵġ£ÕâÑù×öµÄºÃ´¦ÊÇ¿ÉÒÔ´ó´óÌá¸ßÕâЩ¸üеÄЧÂÊ¡£»»¾ä»°Ëµ£¬ÊÂÎñ¿ÉÒÔʹ½Å±¾¸ü¿ì£¬¶øÇÒ¿ÉÄܸü½¡×³£¨²»¹ýÐèÒªÕýÈ·µØÊ¹ÓÃÊÂÎñ²ÅÄÜ»ñµÃÕâÑùµÄºÃ´¦£©¡£
²»ÐÒµÄÊÇ£¬²¢²»ÊÇÿÖÖÊý¾Ý¿â¶¼Ö§³ÖÊÂÎñ(Mysql5Ö§³ÖÊÂÎñ£¬mysql4ÎÒ²»ÖªµÀ)£¬ËùÒÔµ±µÚÒ»´Î´ò¿ªÁ¬½Óʱ£¬PDO ÐèÒªÔÚËùνµÄ“×Ô¶¯Ìá½»£¨auto-commit£©”ģʽÏÂÔËÐС£×Ô¶¯ÌύģʽÒâζ×Å£¬Èç¹ûÊý¾Ý¿âÖ§³ÖÊÂÎñ£¬ÄÇôÄúËùÔËÐеÄÿһ¸ö²éѯ¶¼ÓÐËü×Ô¼ºµÄÒþʽÊ Îñ£¬Èç¹ûÊý¾Ý¿â²»Ö§³ÖÊÂÎñ£¬Ã¿¸ö²éѯ¾ÍûÓÐÕâÑùµÄÊÂÎñ¡£Èç¹ûÄúÐèÒªÒ»¸öÊÂÎñ£¬ÄÇô±ØÐëʹÓà PDO::beginTransaction() ·½·¨À´Æô¶¯Ò»¸öÊÂÎñ¡£Èç¹ûµ×²ãÇý¶¯³ÌÐò²»Ö§³ÖÊÂÎñ£¬ÄÇô½«»áÅ׳öÒ»¸ö PDOException£¨ÎÞÂÛ´íÎó´¦ÀíÉèÖÃÊÇÔõÑùµÄ£ºÕâ×ÜÊÇÒ»¸öÑÏÖØ´íÎó״̬£©¡£ÔÚÒ»¸öÊÂÎñÖУ¬¿ÉÒÔʹÓà PDO::commit() »ò PDO::rollBack() À´½áÊø¸ÃÊÂÎñ£¬ÕâÈ¡¾öÓÚÊÂÎñÖÐÔËÐеĴúÂëÊÇ·ñ³É¹¦¡£
µ±½Å±¾½áÊøÊ±£¬»òÕßµ±Ò»¸öÁ¬½Ó¼´½«±»¹Ø±Õʱ£¬Èç¹ûÓÐÒ»¸öδÍê³ÉµÄÊÂÎñ£¬ÄÇô PDO ½«×Ô¶¯»Ø¹ö¸ÃÊÂÎñ¡£ÕâÊÇÒ»ÖÖ°²È«´ëÊ©£¬ÓÐÖúÓÚ±ÜÃâÔڽű¾·ÇÕý³£½áÊøÊ±³öÏÖ²»Ò»ÖµÄÇé¿ö —— Èç¹ûûÓÐÏÔʽµØÌá½»ÊÂÎñ£¬ÄÇô¼ÙÉèÓÐij¸öµØ·½»á³öÏÖ²»Ò»Ö£¬ËùÒÔÒªÖ´Ðлعö£¬ÒÔ±£Ö¤Êý¾ÝµÄ°²È«ÐÔ¡£
|
//Àý×ÓÀ´×Ôhttp://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0505furlong/index.html
try {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO_ATTR_PERSISTENT => true));
echo "Connected\n";
$dbh->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
$dbh->beginTransaction();
$dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
$dbh->exec("insert into salarychange (id, amount, changedate)
values (23, 50000, NOW())");
$dbh->commit();
} catch (Exception $e) {
$dbh->rollBack();
echo "Failed: " . $e->getMessage();
}
|
ÔÚÉÏÃæµÄʾÀýÖУ¬¼ÙÉèÎÒÃÇΪһ¸öйÍÔ±´´½¨Ò»×éÌõÄ¿£¬Õâ¸ö¹ÍÔ±ÓÐÒ»¸ö ID ºÅ£¬¼´ 23¡£³ýÁËÊäÈëÕâ¸öÈ˵Ļù±¾Êý¾ÝÍ⣬ÎÒÃÇ»¹ÐèÒª¼Ç¼¹ÍÔ±µÄнˮ¡£Á½¸ö¸üзֱðÍê³ÉÆðÀ´ºÜ¼òµ¥£¬µ«Í¨¹ý½«ÕâÁ½¸ö¸üаüÀ¨ÔÚ beginTransaction() ºÍ commit() µ÷ÓÃÖУ¬¾Í¿ÉÒÔ±£Ö¤ÔÚ¸ü¸ÄÍê³É֮ǰ£¬ÆäËûÈËÎÞ·¨¿´µ½¸ü¸Ä¡£Èç¹û·¢ÉúÁË´íÎó£¬catch ¿é¿ÉÒԻعöÊÂÎñ¿ªÊ¼ÒÔÀ´·¢ÉúµÄËùÓиü¸Ä£¬²¢´òÓ¡³öÒ»Ìõ´íÎóÏûÏ¢¡£
²¢²»ÊÇÒ»¶¨ÒªÔÚÊÂÎñÖÐ×÷³ö¸üС£ÄúÒ²¿ÉÒÔ·¢³ö¸´ÔӵIJéѯÀ´ÌáÈ¡Êý¾Ý£¬»¹¿ÉÒÔʹÓÃÄÇÖÖÐÅÏ¢¹¹½¨¸ü¶àµÄ¸üкͲéѯ¡£µ±ÊÂÎñÔڻʱ£¬¿ÉÒÔ±£Ö¤ÆäËûÈËÔÚ¹¤×÷½øÐе±ÖÐÎÞ·¨×÷³ö¸ü¸Ä¡£ÊÂʵÉÏ£¬Õâ²»ÊÇ 100% µÄÕýÈ·£¬µ«Èç¹ûÄú֮ǰûÓÐÌý˵¹ýÊÂÎñµÄ»°£¬ÕâÑù½éÉÜҲδ³¢²»¿É¡£
ºÜ¶à¸ü³ÉÊìµÄÊý¾Ý¿â¶¼Ö§³ÖÔ¤´¦ÀíÓï¾äµÄ¸ÅÄʲôÊÇÔ¤´¦ÀíÓï¾ä£¿Äú¿ÉÒÔ°ÑÔ¤´¦ÀíÓï¾ä¿´×÷ÄúÏëÒªÔËÐÐµÄ SQL µÄÒ»ÖÖ±àÒë¹ýµÄÄ£°å£¬Ëü¿ÉÒÔʹÓñäÁ¿²ÎÊý½øÐж¨ÖÆ¡£Ô¤´¦ÀíÓï¾ä¿ÉÒÔ´øÀ´Á½´óºÃ´¦£º
- ²éѯֻÐè½âÎö£¨»ò×¼±¸£©Ò»´Î£¬µ«ÊÇ¿ÉÒÔÓÃÏàͬ»ò²»Í¬µÄ²ÎÊýÖ´Ðжà´Î¡£µ±²éѯ׼±¸ºÃºó£¬Êý¾Ý¿â½«·ÖÎö¡¢±àÒëºÍÓÅ»¯Ö´ÐиòéѯµÄ¼Æ»®¡£¶ÔÓÚ¸´ÔӵIJé ѯ£¬Õâ¸ö¹ý³ÌÒª»¨±È½Ï³¤µÄʱ¼ä£¬Èç¹ûÄúÐèÒªÒÔ²»Í¬²ÎÊý¶à´ÎÖØ¸´ÏàͬµÄ²éѯ£¬ÄÇô¸Ã¹ý³Ì½«´ó´ó½µµÍÓ¦ÓóÌÐòµÄËÙ¶È¡£Í¨¹ýʹÓÃÔ¤´¦ÀíÓï¾ä£¬¿ÉÒÔ±ÜÃâÖØ¸´·ÖÎö/ ±àÒë/ÓÅ»¯ÖÜÆÚ¡£¼òÑÔÖ®£¬Ô¤´¦ÀíÓï¾äʹÓøüÉÙµÄ×ÊÔ´£¬Òò¶øÔËÐеøü¿ì¡£
- Ìṩ¸øÔ¤´¦ÀíÓï¾äµÄ²ÎÊý²»ÐèÒªÓÃÒýºÅÀ¨ÆðÀ´£¬Çý¶¯³ÌÐò»á´¦ÀíÕâЩ¡£Èç¹ûÓ¦ÓóÌÐò¶ÀÕ¼µØÊ¹ÓÃÔ¤´¦ÀíÓï¾ä£¬ÄÇô¿ÉÒÔÈ·±£Ã»ÓÐ SQL ÈëÇÖ·¢Éú¡££¨È»¶ø£¬Èç¹ûÄúÈÔÈ»½«²éѯµÄÆäËû²¿·Ö½¨Á¢ÔÚ²»ÊÜÐÅÈεÄÊäÈëÖ®ÉÏ£¬ÄÇô¾ÍÈÔÈ»´æÔÚ·çÏÕ£©¡£
Ô¤´¦ÀíÓï¾äÊÇÈç´ËÓÐÓã¬ÒÔÖ PDO ʵ¼ÊÉÏ´òÆÆÁËÔÚÄ¿±ê 4 ÖÐÉèÏµĹæÔò£ºÈç¹ûÇý¶¯³ÌÐò²»Ö§³ÖÔ¤´¦ÀíÓï¾ä£¬ÄÇô PDO ½«·ÂÕæÔ¤´¦ÀíÓï¾ä¡£
ʵÀý£ºPDOµÄÓ¦ÓÃÀý×Ó£º
|
<?php
$dbms='mysql'; //Êý¾Ý¿âÀàÐÍ Oracle ÓÃODI,¶ÔÓÚ¿ª·¢ÕßÀ´Ëµ£¬Ê¹Óò»Í¬µÄÊý¾Ý¿â£¬Ö»Òª¸ÄÕâ¸ö£¬²»ÓüÇסÄÇô¶àµÄº¯ÊýÁË
$host='localhost'; //Êý¾Ý¿âÖ÷»úÃû
$dbName='test'; //ʹÓõÄÊý¾Ý¿â
$user='root'; //Êý¾Ý¿âÁ¬½ÓÓû§Ãû
$pass=''; //¶ÔÓ¦µÄÃÜÂë
$dsn="$dbms:host=$host;dbname=$dbName";
class db extends PDO {
public function __construct(){
try {
parent::__construct("$GLOBALS[dsn]", $GLOBALS['user'], $GLOBALS['pass']);
} catch (PDOException $e) {
die("Error: " . $e->__toString() . "<br/>");
}
}
public final function query($sql){
try {
return parent::query($this->setString($sql));
}catch (PDOException $e){
die("Error: " . $e->__toString() . "<br/>");
}
}
private final function setString($sql){
echo "ÎÒÒª´¦ÀíÒ»ÏÂ$sql";
return $sql;
}
}
$db=new db();
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
foreach ($db->query('SELECT * from xxxx_menu') as $row) {
print_r($row);
}
$db->exec('DELETE FROM `xxxx_menu` where mid=43');
?>
|