最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP中使用匿名函數(shù)操作數(shù)據(jù)庫的例子

 更新時間:2014年11月17日 11:39:46   投稿:junjie  
這篇文章主要介紹了PHP中使用匿名函數(shù)操作數(shù)據(jù)庫的例子,本文直接給出類的代碼、使用例子、繼承例子,需要的朋友可以參考下

復(fù)制代碼 代碼如下:

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);

?>

相關(guān)文章

  • Laravel重定向,a鏈接跳轉(zhuǎn),控制器跳轉(zhuǎn)示例

    Laravel重定向,a鏈接跳轉(zhuǎn),控制器跳轉(zhuǎn)示例

    今天小編就為大家分享一篇Laravel重定向,a鏈接跳轉(zhuǎn),控制器跳轉(zhuǎn)示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • ThinkPHP模板之變量輸出、自定義函數(shù)與判斷語句用法

    ThinkPHP模板之變量輸出、自定義函數(shù)與判斷語句用法

    這篇文章主要介紹了ThinkPHP模板之變量輸出、自定義函數(shù)與判斷語句用法,是關(guān)于ThinkPHP模板操作中非常實用的技巧,需要的朋友可以參考下
    2014-11-11
  • PHP SESSION跨頁面?zhèn)鬟f失敗解決方案

    PHP SESSION跨頁面?zhèn)鬟f失敗解決方案

    這篇文章主要介紹了PHP SESSION跨頁面?zhèn)鬟f失敗解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • 解析PHP之提取多維數(shù)組指定列的方法

    解析PHP之提取多維數(shù)組指定列的方法

    這篇文章主要介紹了解析PHP之提取多維數(shù)組指定列的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • tp5(thinkPHP5框架)使用DB實現(xiàn)批量刪除功能示例

    tp5(thinkPHP5框架)使用DB實現(xiàn)批量刪除功能示例

    這篇文章主要介紹了tp5(thinkPHP5框架)使用DB實現(xiàn)批量刪除功能,結(jié)合實例形式分析了thinkPHP5前端視圖界面數(shù)據(jù)交互及后臺使用DB處理數(shù)據(jù)庫刪除的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • laravel 表單驗證實現(xiàn)多個字段組合后唯一

    laravel 表單驗證實現(xiàn)多個字段組合后唯一

    這篇文章主要介紹了laravel 表單驗證實現(xiàn)多個字段組合后唯一,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 使用YII2框架實現(xiàn)微信公眾號中表單提交功能

    使用YII2框架實現(xiàn)微信公眾號中表單提交功能

    剛剛接觸微信就要做一個表單提交功能,需求是這樣的只能在數(shù)據(jù)庫中存在的手機(jī)號看到表單。下面通過本文給大家分享使用YII2框架實現(xiàn)微信公眾號中表單提交功能,感興趣的朋友一起看看吧
    2017-09-09
  • Laravel框架自定義驗證過程實例分析

    Laravel框架自定義驗證過程實例分析

    這篇文章主要介紹了Laravel框架自定義驗證過程,結(jié)合實例形式分析了Laravel框架自定義驗證的相關(guān)原理、路由、模型等操作技巧,需要的朋友可以參考下
    2019-02-02
  • php微信公眾號開發(fā)模式詳解

    php微信公眾號開發(fā)模式詳解

    這篇文章主要介紹了php微信公眾號開發(fā)者模式,通過后臺服務(wù)器與微信關(guān)注用戶實現(xiàn)更多的交互作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • PHP中的密碼加密的解決方案總結(jié)

    PHP中的密碼加密的解決方案總結(jié)

    很多用戶多個網(wǎng)站使用一個密碼,當(dāng)一個密碼丟失其他也遭殃,本篇文章介紹了PHP中的密碼加密的解決方案總結(jié),有需要的朋友可以了解一下。
    2016-10-10

最新評論

合江县| 天峨县| 榆树市| 康平县| 文化| 汉沽区| 恩平市| 吐鲁番市| 岑巩县| 资溪县| 平果县| 松滋市| 巴里| 石台县| 宾阳县| 遵义县| 红安县| 建始县| 太原市| 灌云县| 永靖县| 永嘉县| 泉州市| 黄梅县| 丰镇市| 黄龙县| 宜都市| 彝良县| 元谋县| 永顺县| 晋城| 江西省| 五指山市| 新邵县| 桂东县| 南靖县| 上饶县| 淅川县| 锦屏县| 介休市| 股票|