ホームページ >バックエンド開発 >PHPチュートリアル >匿名関数を使用して PHP でデータベースを操作する例、php anonymous_PHP チュートリアル

匿名関数を使用して PHP でデータベースを操作する例、php anonymous_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:13:54923ブラウズ

匿名関数を使用して PHP でデータベースを操作する例、php anonymous

コードをコピーします コードは次のとおりです:

クロージャの有用性を示す基本 dao クラス
* 接続のオープンとクローズを処理します。
* スラッシュ SQL を追加します
* SQLパラメータの型チェックと必要に応じたキャスト
* 結果セットの処理と 1 つ以上のオブジェクトの発行のためのフックを提供します。
* 基礎となるリンクと結果オブジェクトにアクセスするためのフックを提供します。

define("ユーザー名","ルート");
定義("パスワード","ルート");
定義("データベース名","ahcdb");
定義("ホスト名","ローカルホスト");

クラスBaseDao {

関数 getConnection() {
        $link = mysql_connect(ホスト名, ユーザー名, パスワード);
        if (!$link)
            die("接続できませんでした: " .mysql_error());
        if (!mysql_select_db(dbName))
            die("データベースを選択できませんでした: " .mysql_error());
        $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));
    }

functionexecuteQuery($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("致命的なエラー: 無効なクエリ '$sql' : " .mysql_error());
        $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);
            $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);
            $obj を返します;
        });
    }
}

クラスの例 {
    var $id;
    var $name;
   
    関数の例($id, $name){
        $this->id = $id;
        $this->name = $name;
    }
   
    関数 setId($id){
        $this->id = $id;
    }
}

クラス ExampleDao は BaseDao を拡張します {
   
   
    関数 getAll(){
        returnparent::getList("ノードから * を選択", null, function($idx, $row) {
            return new Example($row["id"], $row["name"]);
        });
    }
   
    関数ロード($id){
        returnparent::getSingle("id = %1$s のノードから * を選択", array($id), function($row) {
            return new Example($row["id"], $row["name"]);
        });
    }
   
    関数の更新($example){
        returnparent::executeQuery("update nodes set name = '' where id = -1", null, function($result, $link){
            $result を返します;
        });
    }
   
    関数挿入(& $example){
        returnparent::executeQuery("ノードに挿入", null, function($result, $link) use ($example){
            $id = mysql_insert_id($link);
            $example->setId($id);
            $result を返します;
        });
    }
}

$exampleDao = 新しい ExampleDao();

$list = $exampleDao->getAll());

$exampleObject = $exampleDao->load(1));

$exampleDao->update($exampleObject);

?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/912671.html技術記事 PHP で使用される匿名関数数操作データベース库の例,php 匿名复制代码 代码如下: クロージャの有用性を示す基本 dao クラス。 * コンの開閉を処理します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。