The advantage meaning and how to realize the PHP single example mode

Source: Internet
Author: User
Tags foreach commit php language rollback table name access database zend framework advantage

One, what is a single case mode?





1, meaning





As an object's creation pattern, the singleton pattern ensures that a class has only one instance, and instantiates it and provides it globally to the entire system. Instead of creating an instance copy, it returns a reference to an instance stored within a singleton class.





2, the single example mode of the three points:





(1). A static member variable is required to hold a unique instance of the class:


private static $_instance;








(2). Constructors and cloning functions must be declared private to prevent the external program new class from losing the meaning of a single case pattern:


Private Function __construct ()


{


$this->_db = Pg_connect (' xxxx ');


}


Private Function __clone ()


{


}//Overlay __clone () method, prohibit cloning








(3). A public static method (usually the GetInstance method) that accesses this instance must be provided to return a reference to a unique instance


public static function getinstance ()


{


if (! (Self::$_instance instanceof Self))


{


Self::$_instance = new self ();


}


return self::$_instance;





}








Second, why use the single case mode?





Most people understand its purpose from the literal meaning of the singleton pattern, which is a kind of "family planning", which is to save the resources of the system, to avoid the repetition of the instantiation. And every time PHP finishes the page, it clears all the resources out of memory. As a result, the single example of PHP in the actual operation of each run is to be instantiated, so that the single example of repeated instantiation of the meaning of. In this respect alone, PHP's single example is a bit disappointing to everyone. But is the single example just this function and application? The answer is no, let's look at it together.





PHP is mainly used in database applications, so an application will have a large number of database operations, in the use of object-oriented approach to development (nonsense), if the use of single case mode, you can avoid a large number of new operations to consume resources.


If you need a class in your system to control some configuration information globally, it is convenient to use a single example pattern. This can be referred to the Frontcontroller section of the Zend Framework.


In a page request, it is easy to debug, because all the code (such as database Operation class DB) is concentrated in a class, we can set the hook in the class, output log, so as to avoid everywhere var_dump, echo.


1, PHP disadvantage:        

The PHP language is an interpreted scripting language that enables each PHP page to be interpreted and executed All related resources will be recycled. In other words, PHP does not have the language level to make an object resident memory, which is different from ASP.net, Java, such as a single meeting in Java throughout the lifecycle of the application, variables are across the page level, The uniqueness of this instance in the life cycle of the application is truly achievable. However, in PHP, all variables, whether global variables or static members of the class, are page-level, each time the page is executed, the new object will be created, will be emptied after the completion of the page, so it seems that the PHP single example mode has no meaning, So PHP Single example mode I think it makes sense to only have multiple scenarios when it comes to a single page-level request and need to share the same object resource.

2, single case mode in PHP applications:

(1), Application and database interaction

An application will have a large number of database operations, such as the database handle to connect to the database, the use of a single case mode can avoid a lot of new operations, Because each new operation consumes memory resources and system resources.

(2), control configuration information

If a class is needed in the system to globally control some configuration information, then a single case pattern can be easily implemented.

Three, how do I implement a single case pattern?

1, normal database access example:

<?php ...
Initializes a database handle
$db = new db (...);  
//Add user Information
$db->adduserinfo (...);  
......  
//To access the database in the function, find the user information
function getuserinfo ()
{
$db = new db (...); /again new database class, and database to establish a connection
$db = query (...); /Access database based on query statement
}
?>




2, the application of a single example mode to operate the database:

&lt;?php&nbsp; class&nbsp;db&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;private &nbsp;$_db;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;$_instance;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;__construct (...) &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; $this-&gt;_db&nbsp;=&nbsp;pg_connect (...);
/postgrsql&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;__clone () &nbsp;{};&nbsp;&nbsp;//Overlay __clone () method, prohibit cloning &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;function&nbsp; getinstance () &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if (!&nbsp; (Self::$_instance&nbsp;instanceof&nbsp;self) &nbsp;) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;self::$_instance&nbsp;=&nbsp;new&nbsp;self ();&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;self::$
_instance;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;adduserinfo (...) &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;public&nbsp;function&nbsp;getuserinfo (...) &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; &nbsp;&nbsp;} &nbsp;&nbsp; &nbsp;&nbsp;//test&nbsp;&nbsp;&nbsp;&nbsp; $db &nbsp;=&nbsp;db::getinstance ();&nbsp;&nbsp;&nbsp; &nbsp; $db-&gt;adduserinfo (...); &nbsp;&nbsp;&nbsp;&nbsp; $db-&gt;getuserinfo (...); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;?&gt;

The following code is an encapsulation of the PDO operation database class, taking a single case pattern:

&lt;?php/** &nbsp;*&nbsp;mypdo &nbsp;*/class&nbsp;mypdo {&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;static&nbsp;$_
instance&nbsp;=&nbsp;null;
&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp; $dbName &nbsp;=&nbsp; ';
&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp; $dsn;
&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp; $DBH; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; Construction &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;mypdo &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;__construct ($dbHost,&nbsp; $dbUser,&nbsp; $dbPasswd, &nbsp;$
dbname,&nbsp; $dbCharset) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;dsn&nbsp;=&nbsp; ' mysql:host= '. $dbHost. ';
Dbname= '. $dbName; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;dbh&nbsp;=&nbsp;new&nbsp;pdo ($this-&gt;dsn,&nbsp; $dbUser,&nbsp; $dbPasswd); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;dbh-&gt;exec (' set&nbsp; Character_set_connection= '. $dbCharset. ', &nbsp;character_set_results= '. $dbCharset. ', &nbsp;character_set_client=
Binary '); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp; (pdoexception&nbsp; $e) &nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;outputerror ($e-&gt;getmessage ()); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; prevent cloning &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;__clone () &nbsp;{} &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;singleton&nbsp;instance &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;object &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;function&nbsp;getinstance ($dbHost, &nbsp;$ dbuser,&nbsp; $dbPasswd,&nbsp; $dbName,&nbsp; $dbCharset) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if&nbsp; (self::$_instance&nbsp;===&nbsp;null) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self::$_instance&nbsp;=&nbsp;new&nbsp;self ($dbHost,&nbsp; $dbUser, &nbsp;$
dbpasswd,&nbsp; $dbName,&nbsp; $dbCharset); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;
Self::$_instance; &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;Query&nbsp; query &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string &nbsp; $STRSQL &nbsp;sql statement &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;String&nbsp; $queryMode &nbsp; query (all &nbsp;or&nbsp;row) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;boolean&nbsp; $debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;array &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp; &nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;query ($strSql,&nbsp; $queryMode &nbsp;=&nbsp; ' all ',&nbsp; $debug &nbsp;=&nbsp;false) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($debug
&nbsp;===&nbsp;true) &nbsp; $this-&gt;debug ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $recordset &nbsp;=&nbsp; $this-&gt;dbh-&gt;query ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getpdoerror (); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($recordset) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $recordset-&gt;setfetchmode (PDO::FETCH_ASSOC); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($queryMode &nbsp;==&nbsp; ' all ' ) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ result&nbsp;=&nbsp; $recordset-&GT;fetchall (); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;elseif&nbsp; ($queryMode &nbsp;== &nbsp; ' Row ') &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; $result &nbsp;=&nbsp; $recordset-&gt;fetch (); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result
&nbsp;=&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$
Result &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;Update&nbsp; update &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string
&nbsp; $table &nbsp; table name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;Array&nbsp; $arrayDataValue &nbsp; fields and values &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nBSP @param &nbsp;String&nbsp; $where &nbsp; conditions &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;Boolean&nbsp; $debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp; Public&nbsp;function&nbsp;update ($table,&nbsp; $arrayDataValue,&nbsp; $where &nbsp;=&nbsp; ',&nbsp; $debug &nbsp;= &nbsp;false) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;checkfields ($
table,&nbsp; $arrayDataValue); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($where) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp; '; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp; ($arrayDataValue &nbsp;as &nbsp; $key &nbsp;=&gt;&nbsp; $value) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;.=&nbsp; ",&nbsp; ' $key ' = ' $value '"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp;substr ($
STRSQL,&NBSP;1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp; "update&nbsp; ' $
Table ' &nbsp;SET&nbsp; $strSql &nbsp;WHERE&nbsp; $where '; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp; "replace&nbsp;into&nbsp; ' $table ' &nbsp;". Implode (', '), &nbsp;array_keys ($arrayDataValue)). "
') &nbsp;VALUES&nbsp; (' "Implode (" ', ' ",&nbsp; $arrayDataValue)." &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($
debug&nbsp;===&nbsp;true) &nbsp; $this-&gt;debug ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result &nbsp;=&nbsp; $this-&gt;dbh-&gt;exec ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getpdoerror (); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbSP; $result; &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;Insert&nbsp; Insert &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string
&nbsp; $table &nbsp; table name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;Array&nbsp; $arrayDataValue &nbsp; fields and values &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;Boolean&nbsp; $debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@ Return&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;insert ($table ,&nbsp; $arrayDataValue,&nbsp; $debug &nbsp;=&nbsp;false) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; $this-&gt;checkfields ($table,&nbsp; $arrayDataValue); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp; "insert&nbsp;into&nbsp; ' $table ' &nbsp;". Implode (', ', &nbsp;array_keys ($arrayDataValue)). "
') &nbsp;VALUES&nbsp; (' "Implode (" ', ' ",&nbsp; $arrayDataValue)." &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($debug &nbsp;===&nbsp;true) &nbsp; $this-&gt;debug ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result &nbsp;=&nbsp; $this-&gt;dbh-&gt;exec ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getpdoerror ();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp; $result; &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;Replace&nbsp; Overlay Insert &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp; string&nbsp; $table &nbsp; Table name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;Array&nbsp; $arrayDataValue &nbsp; Fields and Values &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;Boolean&nbsp; $debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@ Return&nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;replace ($ table,&nbsp; $arrayDataValue,&nbsp; $debug &nbsp;=&nbsp;false) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;checkfields ($table,&nbsp; $arrayDataValue); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp; "replace&nbsp;into&nbsp; ' $table '". Implode (', ', &nbsp;array_keys ($arrayDataValue)). "
') &nbsp;VALUES&nbsp; (' "Implode (" ', ' ",&nbsp; $arrayDataValue)." &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($debug &nbsp;===&nbsp;true) &nbsp; $this-&gt;debug ($
strSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result &nbsp;=&nbsp; $this-&gt;dbh-&gt;exec ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getpdoerror ();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp; $result; &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;Delete&nbsp; Delete &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string &nbsp; $table &nbsp; table name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;String&nbsp; $where &nbsp; Condition &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;boolean&nbsp; $debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp; &nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;delete ($table,&nbsp; $where &nbsp;=&nbsp; ',&nbsp; $debug &nbsp;= &nbsp;false) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($where &nbsp;== &nbsp; ') &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;outputerror (
"' WHERE ' &nbsp;is&nbsp;null"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp; "delete&nbsp;from&nbsp; ' $table ' &nbsp;WHERE&nbsp; $where"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($debug &nbsp;===&nbsp;true)
&nbsp; $this-&gt;debug ($STRSQL); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result &nbsp;=&nbsp; $this-&gt;dbh-&gt;
EXEC ($STRSQL); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getpdoerror ();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp; $result; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;execSql&nbsp; Execute SQL statements &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;String&nbsp; $strSql &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param
&nbsp;Boolean&nbsp; $debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;int &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;execsql ($strSql,&nbsp; $debug &nbsp;=&nbsp;false) &nbsp;&nbsp; &nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($debug &nbsp;===&nbsp;true) &nbsp; $this-
&gt;debug ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result &nbsp;=&nbsp; $this-&gt;dbh-&gt;exec ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getpdoerror (); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp; $result; &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp; Get field maximum &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string &nbsp; $table &nbsp; table name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string&nbsp; $field _name&nbsp; field name &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string&nbsp; $where &nbsp; conditions &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp; &nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getmaxvalue ($table,&nbsp; $field _name,&nbsp; $where &nbsp;=&nbsp; ", &nbsp; $debug &nbsp;=&nbsp;false) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ strsql&nbsp;=&nbsp; "Select&nbsp;max (". $field _name. ")
&nbsp;AS&nbsp;MAX_VALUE&nbsp;FROM&nbsp; $table "; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($where &nbsp;!=&nbsp; ') &nbsp; $STRSQL &nbsp;.=&nbsp; "
&nbsp;WHERE&nbsp; $where "; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbSP; ($debug &nbsp;===&nbsp;true) &nbsp; $this-&gt;debug ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $arrTemp &nbsp;=&nbsp; $this-&gt;query ($strSql,&nbsp; ' Row ');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $maxValue &nbsp;=&nbsp; $arrTemp ["Max_value"]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($maxValue &nbsp;==&nbsp; "&nbsp;| | &nbsp; $maxValue &nbsp;==&nbsp;null) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; $maxValue &nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$
MaxValue; &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp; Get the number of specified columns &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string &nbsp; $table &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;string&nbsp; $field _name &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;*&nbsp; @param &nbsp;string&nbsp; $where &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;bool&nbsp; $debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;int &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getcount ($table,&nbsp; $field _name, &nbsp; $where &nbsp;=&nbsp; ',&nbsp; $debug &nbsp;=&nbsp;false) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp; "Select&nbsp;count ($field _name) &nbsp;as&nbsp;num&nbsp;from&nbsp;$
Table "; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($where &nbsp;!=&nbsp; ') &nbsp; $STRSQL &nbsp;.=&nbsp; "
&nbsp;WHERE&nbsp; $where "; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($debug &nbsp;===&nbsp;true) &nbsp; $this-&gt;debug ($
strSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $arrTemp &nbsp;=&nbsp; $this-&gt;query ($strSql,&nbsp; ' Row ');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp; $arrTemp [' NUM ']; &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp; Get tablesEngine &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;String&nbsp; $dbName &nbsp; Library name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;String&nbsp; $tableName &nbsp; table name &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;*&nbsp; @param &nbsp;Boolean&nbsp; $debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;string &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;gettableengine ($dbName, &nbsp; $tableName) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $strSql &nbsp;=&nbsp;
"show&nbsp;table&nbsp;status&nbsp;from&nbsp; $dbName &nbsp;where&nbsp;name= '". $tableName. "'";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $arrayTableInfo &nbsp;=&nbsp; $this-&gt;query ($STRSQL);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getpdoerror ();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp; $arrayTableInfo [0][' Engine ']; &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;begintransaction&nbsp; Transaction Start &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp; Function&nbsp;begintransaction () &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$
This-&gt;dbh-&gt;begintransaction (); &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;commit&nbsp; Transaction Submission &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;
Commit () &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;dbh-&gt;commit (); &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;rollback&nbsp; transaction rollback &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp; Rollback () &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;dbh-&gt;rollback (
); &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &Nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;transaction&nbsp; multiple SQL statements through transactions &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; Before calling, it is necessary to determine whether the table engine supports transactions &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param by Gettableengine &nbsp;array&nbsp; $arraySql &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;boolean &nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;exectransaction ($ARRAYSQL) &nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $retval &nbsp;=&nbsp;1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;begintransaction (); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp; ($arraySql &nbsp;as&nbsp; $strSql) &nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($this-&gt;execsql ($STRSQL) &nbsp;==
&nbsp;0) &nbsp; $retval &nbsp;=&nbsp;0; &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; ($ retval&nbsp;==&nbsp;0) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;rollback ();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;commit ();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;checkFields&nbsp; check whether the specified field exists in the specified data table &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;String&nbsp; $table &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;array &nbsp; $arrayField &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp; Checkfields ($table,&nbsp; $arrayFields) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; $fields &nbsp;=&nbsp; $this-&gt;getfields ($table); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp; ($arrayFields &nbsp;as&nbsp; $key &nbsp;=&gt;&nbsp;$ Value) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp; (!in_array ($key, &nbsp; $fields)) &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; $this-&gt;outputerror ("unknown&nbsp;column&nbsp; ' $key ' &nbsp;in&nbsp;field&nbsp;list"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;*&nbsp;getFields&nbsp; get all the field names in the specified datasheet &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp; @param &nbsp;String&nbsp; $table &nbsp; table name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @return &nbsp;array &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;getfields ($table) &nbsp;&nbsp; &nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $fields &nbsp;=&nbsp;array (); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $recordset &nbsp;=&nbsp; $this-&gt;dbh-&gt;query ("show&nbsp;
columns&nbsp;from&nbsp; $table ");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;getpdoerror ();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $recordset-&gt;setfetchmode (PDO::FETCH_ASSOC);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result &nbsp;=&nbsp; $recordset-&gt;fetchall (); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp; ($result &nbsp;as&nbsp; $rows) &nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $fields []&nbsp;=&nbsp; $rows [' Field ']; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$
Fields &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;getPDOError&nbsp; capture PDO error message &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;getpdoerror () &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &nbsp; ($this-&gt;dbh-&gt;errorcode () &nbsp;!=&nbsp; ' 00000 ') &nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $arrayError &nbsp;=&nbsp; $this-&gt;dbh-&gt;errorinfo ();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;outputerror ($arrayError [2]); &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;debug &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;mixed&nbsp; $debuginfo &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp; &nbsp;private&nbsp;function&nbsp;debug ($debuginfo) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;var_dump ($debuginfo);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit ();
&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; output error message &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp; @param &nbsp;String&nbsp; $strErrMsg &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp; &nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;outputerror ($STRERRMSG) &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;exception (' mysql&nbsp;error:&nbsp; '. $strErrMsg); &NBSP;&NBSP;&NBSP;&NBSP} &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;* &nbsp;destruct&nbsp; Close Database connection &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp; Destruct () &nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;dbh&nbsp;=&nbsp;
Null &NBSP;&NBSP;&NBSP;&NBSP}}?&gt;



Call Method:

<?php
require ' MyPDO.class.php ';
$db = mypdo::getinstance (' localhost ', ' root ', ' 123456 ', ' Test ', ' UTF8 ');
$db->query ("SELECT COUNT (*) Frome table");
$db->destruct ();
? >


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.