This article mainly introduces the example of using anonymous functions to operate databases in PHP. This article provides code, examples, and inheritance examples for classes. For more information, see
This article mainly introduces the example of using anonymous functions to operate databases in PHP. This article provides code, examples, and inheritance examples for classes. For more information, see
The Code is as follows:
Base dao class implements strating the usefulness of closures.
* Handles opening and closing of connections.
* Adds slashes SQL
* Type checking of SQL parameters and casts as appropriate
* Provides hook for processing of result set and emitting one or more objects.
* Provides hook for accessing underlying link and result objects.
<? Php
Define ("userName", "root ");
Define ("password", "root ");
Define ("dbName", "ahcdb ");
Define ("hostName", "localhost ");
Class BaseDao {
Function getConnection (){
$ Link = mysql_connect (hostName, userName, password );
If (! $ Link)
Die ("cocould not connect:". mysql_error ());
If (! Mysql_select_db (dbName ))
Die ("cocould not select database:". mysql_error ());
Return $ link;
}
Function setParams (& $ SQL, $ params ){
If ($ params! = Null)
$ SQL = vsprintf ($ SQL, array_map (function ($ n ){
If (is_int ($ n ))
Return (int) $ n;
If (is_float ($ n ))
Return (float) $ n;
If (is_string ($ n ))
Return "'". mysql_real_escape_string ($ n )."'";
Return mysql_real_escape_string ($ n );
}, $ Params ));
}
Function executeQuery ($ SQL, $ params, $ callback = null ){
$ Link = $ this-> getConnection ();
$ This-> setParams ($ SQL, $ params );
$ Return = null;
If ($ result = mysql_query ($ SQL, $ link ))! = Null)
If ($ callback! = Null)
$ Return = $ callback ($ result, $ link );
If ($ link! = Null)
Mysql_close ($ link );
If (! $ Result)
Die ("Fatal Error: Invalid query '$ SQL':". mysql_error ());
Return $ return;
}
Function getList ($ SQL, $ params, $ callback ){
Return $ this-> executeQuery ($ SQL, $ params, function ($ result, $ link) use ($ callback ){
$ Idx = 0;
$ List = array ();
While ($ row = mysql_fetch_assoc ($ result ))
If ($ callback! = Null)
$ List [$ idx] = $ callback ($ idx ++, $ row );
Return $ list;
});
}
Function getSingle ($ SQL, $ params, $ callback ){
Return $ this-> executeQuery ($ SQL, $ params, function ($ result, $ link) use ($ callback ){
If ($ row = mysql_fetch_assoc ($ result ))
$ Obj = $ callback ($ row );
Return $ obj;
});
}
}