entomb/obj_mysql

此包已被废弃,不再维护。未建议替代包。

MySQL抽象层

1 2014-06-04 22:38 UTC

This package is not auto-updated.

Last update: 2024-01-09 00:20:49 UTC


README

Latest Stable Version Total Downloads Bitdeli Badge

OBJ MySQL 是一个为PHP>5.2提供的简单MySQL抽象层,它通过mysqli_*函数提供了简单且安全的数据库交互。

OBJ-MySQL非常适合小规模应用,如定时任务、Facebook画布活动或微型框架或网站。

此项目正在建设中,欢迎提供任何反馈

作者: Jonathan Tavares

查看变更日志了解最新更改信息

## 获取 OBJ_MySQL 您可以从这里下载,或使用composer要求。

{
    "require": {
		"entomb/obj_mysql": "dev-master"
	}
}

或者您可以通过克隆此仓库来要求它

$ git clone https://github.com/entomb/OBJ-MySQL.git

如果您已在项目中使用GIT,您可以将其添加为子模块

$ git submodule add https://github.com/entomb/OBJ-MySQL.git libs/db

## 启动驱动器 要启动数据库驱动器,您必须包含主类文件,并传递下面的'$config'数组。您可以为每个实例拥有多个类实例,每个实例都有自己的$config(例如,一个用于读取,一个用于写入)。

    //include de main OBJ_mysql class file
    include("bin/OBJ_mysql.php");

    //configuration array
    $config = array();
    $config["hostname"]  = "YOUR_HOST";
    $config["database"]  = "YOUR_DATABASE_NAME";
    $config["username"]  = "USER_NAME";
    $config["password"]  = "PASSWORD";

    //other configurations
    $config["port"]      = "PORT"; //defaults to 3306
    $config["charset"]    = "CHARSET"; //defaults to UTF-8
    $config["exit_on_error"] = "TRUE|FALSE"; //defaults to true
    $config["allow_logging"] = "TRUE|FALSE"; //defaults to true

    //class instantiation
    $db = new OBJ_mysql($config);

## 使用 OBJ_MySQL

此库有多种使用方式,以下是一些最常用方法的示例

### 从表中选择和检索数据

  $Result = $db->query("SELECT * FROM users");
  $Users  = $Result->fetchALL();

### 在表中插入数据

要操作表,您可以使用最重要的方法,它们的工作方式相同:解析键/值对的数组并形成安全的查询

方法包括

  $db->insert( String $Table, Array $Data); //generates an INSERT query
  $db->replace(String $Table, Array $Data); //generates an INSERT OR UPDATE query
  $db->update( String $Table, Array $Data, Array $Where); //generates an UPDATE query
  $db->delete( String $Table, Array $Where); //generates a DELETE query

所有方法将返回结果的mysqli_insert_id()或根据上下文返回true/false。正确的做法是始终检查它们是否执行成功。

  $ok = $db->delete('users', array( 'user_id' => 9 ) );
  if($ok){
    echo "user deleted!";
  }else{
    echo "can't delete user!";
  }

注意:所有参数值在执行前都会被清理,您不需要事先转义值。

  $new_user_id = $db->insert('users', array(
                                'name'  => "jothn",
                                'email' => "johnsmith@email.com",
                                'group' => 1,
                                'active' => true,
                              )
                          );
  if($new_user_id){
    echo "new user inserted with the id $new_user_id";
  }

### 在查询中绑定参数

绑定参数是一种防止SQL注入的好方法,因为参数在执行前会被清理。

  $Result = $db->query("SELECT * FROM users WHERE id_user = ? AND active = ? LIMIT 1",array(11,1));
  if($Result){
    $User = $Result->fetchArray();
    print_r($User);
  }else{
    echo "user not found";
  }

### 使用 OBJ_mysql_result 类

执行SELECT查询后,您将收到一个OBJ_mysql_result对象,它将帮助您操作结果数据。有几种访问数据的方式,请查看以下示例

#### 获取所有数据

  $Result = $db->query("SELECT * FROM users");
  $AllUsers = $Result->fetchAll();

获取所有数据作为ObjectArrayfetchAll()方法将根据$_default_result_type配置返回默认值。其他方法包括

$Row = $Result->fetch();        // Fetch a single result row as defined by the config (Array or Object)
$Row = $Result->fetchArray();   // Fetch a single result row as Array
$Row = $Result->fetchObject();  // Fetch a single result row as Object

$Data = $Result->fetchAll();        // Fetch all result data as defined by the config (Array or Object)
$Data = $Result->fetchAllArray();   // Fetch all result data as Array
$Data = $Result->fetchAllObject();  // Fetch all result data as Object

$Data = $Result->fetchColumn(String $Column);           // Fetch a single column in a 1 dimension Array
$Data = $Result->fetchArrayPair(String $key, String $Value);  // Fetch data as a key/value pair Array.

#### 别名

  $db->get()                  // Alias for $db->fetch();
  $db->getAll()               // Alias for $db->fetchAll();
  $db->getObject()            // Alias for $db->fetchAllObject();
  $db->getArray()             // Alias for $db->fetchAllArray();
  $db->getColumn($key)        // Alias for $db->fetchColumn($key);

#### 迭代 要迭代结果集,您可以使用上面列出的任何fetch()方法

  $Result = $db->query("SELECT * FROM users");

  //using while
  while( $row = $Result->fetch() ){
    echo $row->name;
    echo $row->email;
  }

  //using foreach
  foreach( $Result->fetchAll() as $row ){
    echo $row->name;
    echo $row->email;
  }

#### 记录和错误

显示查询记录。记录包含执行的SQL、执行时间和结果行数(如果有)

  print_r($db->log());

为了调试MySQL错误

使用$db->errors()获取所有错误(如果没有错误则返回false)或使用$db->lastError()获取关于最后错误的详细信息。

  if( $db->errors() ){
      echo $db->lastError();
  }