entomb / obj_mysql
MySQL抽象层
Requires
- php: >=5.2.0
This package is not auto-updated.
Last update: 2024-01-09 00:20:49 UTC
README
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();
获取所有数据作为Object
或Array
,fetchAll()
方法将根据$_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(); }