database, PHP/MySQL 数据库包装,扩展了PDO和 PDOStatement

作者:无名 - GitHub -

  • 源代码名称:database
  • 源代码网址:http://www.github.com/salebab/database
  • database源代码文档
  • database源代码下载
  • git url:
    git://www.github.com/salebab/database.git
  • git clone代码到本地:
    git clone http://www.github.com/salebab/database
  • subversion代码到本地:
    $ svn co --depth empty http://www.github.com/salebab/database

    checked out revision 1.

    $ cd repo

    $ svn up trunk

  • 带有查询生成器的包装器

    pdo包装扩展了pdo和pdostatement类,并添加了一些不错的方法作为 insert/update/delete 等。 此外,还有非常有用的sql查询生成器。

    api

    因为库扩展了 pdo驱动程序插件,所以你可以使用所有本机pdo方法和新的附加内容:

    数据库- 数据库类

    • insert - 将对象或者 array 作为行插入到数据库表( optionaly: 使用 prepared 语句)
    • update - 更新数据库表中存在的行( optionaly: 使用 prepared 语句)
    • replace - 插入或者替换( 使用替换表。 语法)
    • save - 将数据保存到表( 确定插入或者更新将使用的方法)
    • delete - 删除数据库表中的行
    • count - 选择计数( * ) 语句的快捷方式
    • select - 查询生成对象
    • createquery - 创建新的查询生成器
    • getcolumnsfromtable - 表中的所有列作为 array

    语句

    • fetchinto - 将行提取到对象( optionaly: 仅来自特定表)
    • fetchintofromlastrow 从最后一行获取另一个对象( 基于表名)
    • 获取对象的集合集合( 自定义定义对象或者 stdclass )
    • getcolumnvalue - 特定列的值

    查询- 生成sql查询对象

    • select - 选择语句
    • from - 声明的语句
    • where - 添加新的位置语句。 多个将被连接的位置
    • wherein - 在(。) 语句中添加位置
    • wherenotin - 添加不在(。) 语句中的位置
    • having - having 语句
    • join - join 表语法
    • groupby - group by 语句
    • orderby - order by 语句
    • limit - 限制语句
    • getquery - buld和返回查询字符串
    • execute - 执行查询

    有关如何使用数据库查询生成器的更多信息,请参见 。

    用法示例

    创建数据库实例

    $db = new databasedb("mysql:host=localhost;dbname=your_db_name","your_db_username","your_db_password");

    选择

    执行查询并获取用户对象:

    class user {}

    $user_id = 1;

    $sql ="select * from users where user_id = and is_active =";

    $user = $db-gt;executequery($sql, array($user_id, 1))

    -gt;fetchinto(new user);//or -gt;fetchobject("user") as in standard pdo driver

    如果需要收集用户对象集合,可以使用 fetchcollection 方法:

    $users = $db-gt;executequery($sql, array($user_id, 1))

    -gt;fetchcollection(new user);//or -gt;fetchcollection("user");

    更复杂,使用查询生成器。 你可以构建对象的'本机'结构。 例如你可以邮寄 objects对象收集,每个收费的post对象可能有一个属性 $author,它是用户对象的实例:

    class user

    {

    /**

    * get user's first and last name

    *

    * @return string

    */

    function getname() {

    return $this-gt;first_name."". $this-gt;last_name;

    }

    }

    class post

    {

    /**

    * @var user

    */

    public $author;

    }

    //library need fetch_table_names option for mapping class names and table names

    $db-gt;setfetchtablenames(1);

    $sql = $db-gt;select("p.*, u.*")

    -gt;from("posts p")

    -gt;join("inner join users u using(user_id)")

    -gt;where("u.user_id =", $user_id)

    -gt;orderby("p.title");

    $stmt = $sql-gt;execute();

    /* @var post[] $post_collection */

    $post_collection = array();

    //fetching data into post object from posts table (p is alias)

    while($post = $stmt-gt;fetchinto(new post,"p")) {

    //fetch user object from users table (u is alias)

    $post-gt;author = $stmt-gt;fetchintofromlastrow(new user,"u");

    $post_collection[] = $post;

    }

    //you can send $post_collection from model to view in your controller, so here is usage in view

    foreach($post_collection as $post) {

    echo $post-gt;author-gt;getname();

    }

    插入

    库具有 insert 方法,可以轻松插入 array 或者对象作为数据库表的行。 注意,不匹配列名称的所有其他属性或者元素都将被忽略。

    $data = array(

    "username" =gt;"user 1234",

    "email" =gt;"user@example.com",

    "mtime" =gt; time()

    );

    $db-gt;insert("users", $data);

    插入 prepared-语句

    insert() 方法的第三个参数是"唯一的prepared stmt密钥"。 每个具有该键的插入都将使用相同的prepared 语句。

    foreach($data_array as $data) {

    $db-gt;insert("users", $data,"unique_stmt_key");

    }

    更新

    update语句的一些示例

    $user_id = 1;

    $db-gt;update("users", $data,"user_id =", $user_id);

    $db-gt;update("users", $data,"user_id = and email =", array(1,"user@example.com"));

    保存数据

    自动确定插入或者更新。 如果 $data['user_id'] 退出它将被更新,否则将被插入。

    $db-gt;save("users", $data,"user_id");//user_id is name of primary column

    更多示例

    //delete row in table

    //some as $db-gt;exec("delete from users where user_id = 1");

    $db-gt;delete("users","user_id =", $user_id);

    //count rows in table

    $count = $db-gt;count("users");

    /* @var user[] $users collection of user objects */

    $users = $db-gt;executequery("select * from users")-gt;fetchcollection(new user);

    查看更多关于sakila数据库的示例。



    文章标签:数据extphpwrap换行extendextendspdo

    IT人知识库 原文地址:http://www.itpeo.net/389612/4630938.html





    effective-go-zh-en, 《Effective Go》中英双语版

    源代码名称:effective-go-zh-en源代码网址:http://www.github.com/bingohua ...

    TANK, 一种高性能的分布式日志服务

    源代码名称:tank源代码网址:http://www.github.com/phaistos-networks/tank ...

    MXNMT, 基于MXNet的神经机器翻译

    源代码名称:mxnmt源代码网址:http://www.github.com/magic282/mxnmtmxnmt源代 ...

    cli, Linode平台的命令行 接口

    源代码名称:cli源代码网址:http://www.github.com/linode/clicli源代码文档cli源代 ...

    SMBTrap, 为测试重定向到SMB问题而开发的工具

    源代码名称:smbtrap源代码网址:http://www.github.com/cylancespear/smbtra ...

    hls-analyzer, HTTP Live流( HLS ) 内容分析器

    源代码名称:hls-analyzer源代码网址:http://www.github.com/epiclabs-io/hl ...

    meteor-subs-cache, 用于缓存订阅的Meteor 包

    源代码名称:meteor-subs-cache源代码网址:http://www.github.com/ccorcos/m ...

    hack-movie, 黑客相关的电视剧/电影/纪录片

    源代码名称:hack-movie源代码网址:http://www.github.com/secwiki/hack-mov ...

    tsws, TSWS,一个完全简单的Web服务器

    源代码名称:tsws源代码网址:http://www.github.com/dfletcher/tswstsws源代码文 ...

    reddit-shell, 基于web的shell 模拟器,允许你通过 命令行 浏览 reddit

    源代码名称:reddit-shell源代码网址:http://www.github.com/jasonbio/reddi ...

    rfedfre

    vscode-debug-nodejs-es6, 如何使用VSCode调试 ES6 NodeJS

    源代码名称:vscode-debug-nodejs-es6源代码网址:http://www.github.com/kat ...

    XPS9350-macOS, Dell XPS 13 9350 ( Skylake )的macOS 修补程序

    源代码名称:xps9350-macos源代码网址:http://www.github.com/syscl/xps9350 ...

    Leetcode-Py, 他们说 python 很慢

    源代码名称:leetcode-py源代码网址:http://www.github.com/jw2013/leetcode ...

    rfedfre

    hextris, 以俄罗斯方块为灵感的HTML5益智游戏 !

    源代码名称:hextris源代码网址:http://www.github.com/hextris/hextrishext ...

    instagram-search, 用于搜索 Instagram的简单网络应用程序

    源代码名称:instagram-search源代码网址:http://www.github.com/osahyoun/i ...

    openbeacon-ng, 用于nRF51822的OpenBeacon.org 活动 2.4 GHz RFID

    源代码名称:openbeacon-ng源代码网址:http://www.github.com/meriac/openbe ...

    EveryDaySport, 从今天开始做一个健康的程序员。

    源代码名称:everydaysport源代码网址:http://www.github.com/hoosin/everyd ...

    empleo-dot-net, ASP.NET MVC5 Iniciativa aprendizaje mediante ejemplos

    源代码名称:empleo-dot-net源代码网址:http://www.github.com/developersdo ...

    ansible-haproxy, 安装和配置 HAProxy

    源代码名称:ansible-haproxy源代码网址:http://www.github.com/devops-coop ...

    Developer-Conferences, 即将举行的开发者会议列表

    源代码名称:developer-conferences源代码网址:http://www.github.com/murtz ...