首页 > 编程 > PHP > 正文

PHP中使用匿名函数操作数据库的例子

2020-03-22 18:36:26
字体:
来源:转载
供稿:网友
复制代码 代码如下:
Base dao html' target='_blank'>class illustrating 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. phpdefine("userName","root");
define("password","root");
define("dbName","ahcdb");
define("hostName","localhost");class BaseDao { function getConnection() {
$link = mysql_connect(hostName, userName, password);
if (!$link)
die("Could not connect: " . mysql_error());
if (!mysql_select_db(dbName))
die("Could 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;
});
}
}class Example {
var $id;
var $name;

function Example($id, $name){
$this- id = $id;
$this- name = $name;
}

function setId($id){
$this- id = $id;
}
}class ExampleDao extends BaseDao {


function getAll(){
return parent::getList("select * from nodes", null, function($idx, $row) {
return new Example($row["id"], $row["name"]);
});
}

function load($id){
return parent::getSingle("select * from nodes where id = %1/$s", array($id), function($row) {
return new Example($row["id"], $row["name"]);
});
}

function update($example){
return parent::executeQuery("update nodes set name = '' where id = -1", null, function($result, $link){
return $result;
});
}

function insert(& $example){
return parent::executeQuery("insert into nodes", null, function($result, $link) use ($example){
$id = mysql_insert_id($link);
$example- setId($id);
return $result;
});
}
}$exampleDao = new ExampleDao();$list = $exampleDao- getAll());$exampleObject = $exampleDao- load(1));$exampleDao- update($exampleObject);
PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表