一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP中使用匿名函數操作數據庫的例子

PHP中使用匿名函數操作數據庫的例子

2020-08-12 14:11PHP教程網 PHP教程

這篇文章主要介紹了PHP中使用匿名函數操作數據庫的例子,本文直接給出類的代碼、使用例子、繼承例子,需要的朋友可以參考下

復制代碼 代碼如下:


Base dao 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.

 

<?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("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);

?>

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天澡夜夜澡狠狠澡 | 国产成人精品午夜视频' | 女人用粗大自熨喷水在线视频 | 国产亚洲精品日韩香蕉网 | 超级碰在线视频 | 麻豆天美精东果冻传媒在线 | 玩高中女同桌肉色短丝袜脚文 | 微拍秒拍99福利精品小视频 | 欧美人禽杂交狂配无删完整 | 国产精品一区二区不卡的视频 | 亚洲AV久久久噜噜噜久久 | 久久香蕉电影 | 国产一区二区在线观看美女 | 午夜一级视频 | 国产在线乱子伦一区二区 | 青草青草视频2免费观看 | 欧美亚洲桃花综合 | 91精品国产高清久久久久久io | 男人女人日批 | 国产无套在线播放 | 国产精品合集一区二区 | 亚洲国产在线视频精品 | 动漫美女羞羞视频 | 色综合久久98天天综合 | 特级av毛片免费观看 | 99在线免费播放 | 校花被扒开尿口折磨憋尿 | 日本道高清 | 国产suv精品一区二区四区三区 | 国产一级在线免费观看 | 13日本xxxxxxxxx18| 丰满肥臀风间由美357在线 | 久久视频在线视频观看天天看视频 | 我的妹妹最近有点怪免费播放 | 西野翔全部作品在线观看 | 成人高辣h视频一区二区在线观看 | 把美女屁股眼扒开图片 | 亚洲免费网站在线观看 | 亚洲AV蜜桃永久无码精品无码网 | 男女性gif抽搐出入视频 | 韩国漂亮美女三级在线观看 |