PHP轻量级数据库操作组件

php中文网
发布: 2016-06-23 13:16:18
原创
2070人浏览过

# RapidDB 轻量级数据库操作组件* 支持事务嵌套* PDO支持* JSON支持* 类的实例集合支持* 轻量级* 可以轻易和其他框架整合* 多数据库多连接支持##使用方式###通过composer安装```$ composer require shiwolang/db```###通过git地址```http://git.oschina.net/shiwolang/RapidDB```###初始化连接**暂仅支持mysql和sqlite**#####单个连接情景```phpDB::init([    'database_type' => 'mysql',    'database_name' => 'dbname',    'server'        => 'localhost',    'username'      => 'username',    'password'      => 'yourpass',    'charset'       => 'utf8']);```#####多个连接情景```phpDB::init([    'database_type' => 'mysql',    'database_name' => 'dbname',    'server'        => 'localhost',    'username'      => 'username',    'password'      => 'yourpass',    'charset'       => 'utf8'], "connection1");```#####PDO设置初始化 单个连接情景```phpDB::init($PDO);```#####PDO设置初始化 多个连接情景```phpDB::init($PDO, "connection1");```###获取数据库连接---------------------------------------#####单个连接情景```phpDB::connection();```#####多个连接情景```phpDB::connection("connection1");```###添加数据(单表)---------------------------------------```php$lastInsertId = DB::connection()->insert("content", [    "title"       => "title1",    "content"     => "content1",    "time"        =>  time()]);```###删除数据(单表)---------------------------------------```php$lastInsertId = DB::connection()->delete("content", "id = :id", [":id" => 1]);```###修改数据(单表)---------------------------------------```php$lastInsertId = DB::connection()->update("content", [    "title"       => "title1",    "content"     => "content1",    "time"        =>  time()],"id = :id", [":id" => 1]);```###查询数据---------------------------------------**请注意在使用limit的时候的数值务必为整数int型!!**```phpDB::connection()->query("SELECT * FROM content where title = 'title1' LIMIT 10")->all();DB::connection()->query("SELECT * FROM content WHERE title = :title LIMIT :limit", [    ":title"     => "title1",    ":limit"     =>  10])->all();DB::connection()->query("SELECT * FROM content WHERE id = ? LIMIT ?", ["title1", 10])->all();```####设置获取模式#####设置为数组的获取方式(默认方式)```phpDB::connection()->query("SELECT * FROM content where title = 'title1' LIMIT 10")->all();```#####设置为类的实例集合的获取方式```phpDB::connection()->query("SELECT * FROM content where title = 'title1' LIMIT 10")->bindToClass(Content::class)->all();DB::connection()->query("SELECT * FROM content where title = 'title1' LIMIT 10")->all(Content::class);```#####将每行的列作为参数传递给指定的函数,并返回调用函数后的结果的获取方式```phpDB::connection()->query("SELECT * FROM content where title = 'title1' LIMIT 10")->all(function($title, $content, $time){    return [        "title"     => $title,        "content"   => $content,        "time"      => date("Y-m-d H:i:s", $time)    ];});```#####按相关的结果集中获取下一行数组获取方式```phpDB::connection()->query("SELECT * FROM content LIMIT 10")->each(function ($row) {    print_r($row);});```类的实例获取方式```phpDB::connection()->query("SELECT * FROM content LIMIT 10")->each(function ($row) {    print_r($row);}, Content::class);```#####JSON格式数据数组获取方式的json```phpDB::connection()->query("SELECT * FROM content LIMIT 10")->json();```类的实例集合获取方式的json  **!!请注意!!  DB::json(&$fetchResult = null, $className = null, $args = []) 第一个形参为返回的结果集,并不是绑定的类名!!**```phpDB::connection()->query("SELECT * FROM content LIMIT 10")->json($data, Content::className());```**!!注!!**json数据获取中当获取方式为对象集合的方式时,支持数据自动格式化,可以使用@json注解来注解类中的一个公共方法,对应的json键名为这个方法的首字符小写的[去掉get字符后(如果含有)]方法名称;同样可以实现ObjectContainerInterface和\JsonSerializable 接口并使用Statement::setJsonObjectContainerClassName($jsonObjectContainerClassName)进行对象集合容器的自定义设置###事务的支持-----------------------**此功能依赖数据事务功能**#####事务使用声明方式```php$db = DB::connection();$db->beginTransaction();try {    $lastInsertId = $db->insert("content", [        "title"       => "title1",        "content"     => "content1",        "time"        =>  time()    ]);    $db->commit();} catch (\Exception $e) {    $db->rollBack();    throw $e;}```#####事务使用声明方式支持无限级嵌套```php$db = DB::connection();$db->beginTransaction();try {    try {        $lastInsertId = $db->insert("content", [            "title"       => "title1",            "content"     => "content1",            "time"        =>  time()        ]);                $db->commit();    } catch (\Exception $e) {        $db->rollBack();        throw $e;    }        $lastInsertId = $db->insert("content", [        "title"       => "title2",        "content"     => "content2",        "time"        =>  time()    ]);        $db->beginTransaction();    try {        $lastInsertId = $db->insert("content", [            "title"       => "title3",            "content"     => "content3",            "time"        =>  time()        ]);        $db->commit();    } catch (\Exception $e) {        $db->rollBack();        throw $e;    }        $db->commit();} catch (\Exception $e) {    $db->rollBack();    throw $e;}```#####事务使用回调函数方式,支持无限级嵌套```phpDB::connection()->transaction(function () {        DB::connection()->transaction(function () {                DB::connection()->insert("content", [                    "title"       => "title1",                    "content"     => "content1",                    "time"        =>  time()                ]);            }        });                DB::connection()->insert("content", [            "title"       => "title2",            "content"     => "content2",            "time"        =>  time()        ]);                DB::connection()->transaction(function () {                DB::connection()->insert("content", [                    "title"       => "title3",                    "content"     => "content3",                    "time"        =>  time()                ]);            }        });    }});```###执行记录查询-----------------------#####获取所有执行记录```phpDB::connection()->query("SELECT * FROM content LIMIT 1")->all();DB::connection()->query("SELECT * FROM content WHERE title = :title LIMIT :limit", [    ":title" => "title1",    ":limit" => 10])->all();;print_r(DB::connection()->getLog());```#####单条未执行的sql```php$sql = DB::connection()->query("SELECT * FROM content WHERE title = :title LIMIT :limit", [    ":title" => "title1",    ":limit" => 10], true);```##附录#####Content类```phpclass Content{    private $id;    private $title;    private $content;    /**     * @return mixed     */    public function getId()    {        return $this->id;    }    /**     * @param mixed $id     */    public function setId($id)    {        $this->id = $id;    }    /**     * @return mixed     */    public function getTitle()    {        return $this->title;    }    /**     * @param mixed $title     */    public function setTitle($title)    {        $this->title = $title;    }    /**     * For json formater     * @json     * @return mixed     */    public function getContent()    {        return $this->content . "_nihao";    }    /**     * @param mixed $content     */    public function setContent($content)    {        $this->content = $content;    }        public function __get($name)    {        $getter = 'get' . self::camelName($name);        if (method_exists($this, $getter)) {            return $this->$getter();        }        throw new \Exception('Getting unknown property: ' . get_class($this) . '::' . $name);    }    public function __set($name, $value)    {        $setter = 'set' . self::camelName($name);        if (method_exists($this, $setter)) {            $this->$setter($value);            return;        }        throw new \Exception('Setting unknown property: ' . get_class($this) . '::' . $name);    }    protected static function camelName($name, $ucfirst = true)    {        if (strpos($name, "_") !== false) {            $name = str_replace("_", " ", strtolower($name));            $name = ucwords($name);            $name = str_replace(" ", "", $name);        }        return $ucfirst ? ucfirst($name) : $name;    }}```#####数据库创建语句```sqlCREATE TABLE `content` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `title` varchar(255) DEFAULT NULL,  `content` varchar(255) DEFAULT NULL,  `time` int(10) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8```
登录后复制

免费商城免费网店系统asp.net 2.0+sql2005
免费商城免费网店系统asp.net 2.0+sql2005

开发环境: 1、开发语言:asp.net 2.0(C#) 2、数据库sql 2005 3、开发平台:windows 2003+Microsoft .NET Framework v2.0 +Microsoft SQL server 2005+IIS6.0 配置环境要求: 1、操作系统须为windows 2003,须已安装IIS Web 6.0以上服务 (从Windows组件中安装IIS) 2、须已安

免费商城免费网店系统asp.net 2.0+sql2005 0
查看详情 免费商城免费网店系统asp.net 2.0+sql2005
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号