NotORM使用介绍
来源:互联网 发布:祖冲之 圆周率算法 编辑:程序博客网 时间:2024/05/24 05:35
上一次写过一篇关于安装NotORM的方法(点击查看),本篇介绍的是如何通过其来实现数据的操作。
参考地址:http://www.notorm.com
上一次写过一篇关于安装NotORM的方法(点击查看),本篇介绍的是如何通过其来实现数据的操作。
参考地址:http://www.notorm.com
1.建立连接,注意编码问题:
mysql编码 ,PHP端的header, 浏览器<meta>,file文件本身的编码
必须保持一致!
header('Content-type: text/html;charset=utf-8');//申明格式
require_once '../vendor/NotORM.php';
$pdo = new PDO("mysql:dbname=dbname","root","root");
$pdo->exec('set names utf8');//不加会乱码,申明格式$structure = new NotORM_Structure_Convention(
$primary = "", // id_$table
$foreign = "", // id_$table
$table = "", // {$table}s
$prefix = "tp_" // tp_$table//表前缀
);
$db = new NotORM($pdo,$structure);
Database
$db = new NotORM($pdo[, $structure[, $cache]])
Get database representation$db->debug = true
Call error_log("$file:$line:$query; -- $parameters")
before executing a query$db->debug = $callback
Call $callback($query, $parameters)
before executing a query, if $callback
would return false
then do not execute the query$db->debugTimer = $callback
Call $callback()
after executing a query$db->rowClass = 'ClassName'
Derive row objects from this class (defaults to 'NotORM_Row'
)$db->transaction = $command
Assign 'BEGIN'
, 'COMMIT'
or 'ROLLBACK'
to start or stop transaction单行查询用:$db->table->fetch
多行查询用:$db->table; 配合两个foreach
查询:
Result
$table = $db->$tableName([$where[, $parameters[, ...]]])
Get representation of table $tableName ,查询$table所有信息
$table->where($where[, $parameters[, ...]])
Set WHERE
(explained later) where$table->and($where[, $parameters[, ...]])
Add AND
condition,对where的补充,and并且$table->or($where[, $parameters[, ...]])
Add OR
condition OR或$table->order($columns[, ...])
Set ORDER BY
, can be expression ("column DESC, id DESC"
) 排序$table->order("")
Reset previously set order 重置先前的排序 $table->select($columns[, ...])
Set retrieved columns, can be expression ("col, MD5(col) AS hash"
) $table->select("")
Reset previously set select columns 重置之前设置选择列,选择字段,同TP的field$table->limit($limit[, $offset])
Set LIMIT and OFFSET,[num,offset],分别对应条数和开始下标$table->group($columns[, $having])
Set GROUP BY
and HAVING
$table->union($table2[, $all])
Create UNION
$table->lock($exclusive)
Append FOR UPDATE
(default) or LOCK IN SHARE MODE
(non-exclusive)$array = $table->fetchPairs($key, $value)
Fetch all values to associative array$array = $table->fetchPairs($key)
Fetch all rows to associative arraycount($table)
Get number of rows in result set 计算结果数量(string) $table
Get SQL query 获取SQL执行$table($where[, $parameters[, ...]])
Shortcut for $table->where()
since PHP 5.3对照上表1.$table = $db->tp_img(); //SELECT * FROM tp_img
2.$db->tp_img()->fetch('title');//SELECT title FROM tp_img
$where = array('field1'=>111,'field2'=>222);其他条件,拆开单用,合起来用道理相同,这里复合起来统一说明
3.$tp_img = $db->tp_img()
->select('id,title,sort,info') //设置获取字段,相当于TP ->field
->where($where)//关联数组,与TP用法相同
->where("field3", $db->tp_img()) //二次查询,field IN (SELECT $primary FROM $tableName)"//默认返回的是查询结果的ID
->and('field4 like ?','%aa')//where条件的扩展,注意like书写格式
->order('sort ASC,id ASC')//order,排序
->limit(10,1);//[num,offset],分别对应条数和开始下标,同TP
$sql = "SELECT id,title,sort,info FROM tp_img WHERE (field1 = 111) AND (field2 = 222) AND (field IN ('9', '10')) AND (field3 like ?) ORDER BY sort ASC,id ASC LIMIT 10 OFFSET 1";
但是查询的返回值,大家在用的时候,是对象格式,不能直接使用,得转换一下,那么请看下边的方法。
foreach ($table as $id => $row)
Iterate all rows in result,迭代中所有行的结果$row = $db->{$tableName}[$id]
Get single row with ID $id
from table $tableName
(null
if the row does not exist)通过ID获取表table中单行的值
$row = $table[$id]
Get row with primary key $id
from the result,从结果中获取主键值$row = $table[array($column => $value)]
Get first row with $column
equals to $value
$row = $table->fetch()
Get next row from the result$data = $row[$column]
Get data from column $column 从元素中获得值
$row2 = $row->$tableName
Get row from referenced table 从引用表行$table2 = $row->$tableName([$where[, $parameters[, ...]]])
Get result from referencing table 从引用表得到结果$table2 = $row->$tableName()->via($column)
Use non-default column (e.g. created_by
)foreach ($row as $column => $data)
Iterate all values in row 遍历所有值的行count($row)
Get number of columns in row 得到的列数行(string) $row
Get primary key value 获取主键值
4.使用,对照上表,$table为上边查询出来的返回结果,不能直接用,得转换【括起来的为常用的】
foreach ($table as $id => $row){
$db->tp_img[$id]; //从tp_img表中获得单行的主键ID值
var_dump( $table[array('column' =>'value')] ); //【!!!获得第一行column = value的值】
echo $table[$id]; //返回单行结果的主键ID
echo $row['column']; //【!!!可以直接输出要查询的数据,column为字段名】
$re = $row->tp_img(); //object(NotORM_Row)
$re = $row->tp_img('id'); //object(NotORM_MultiResult)
$re = $row->tp_img()->via('classname'); //object(NotORM_MultiResult)
foreach ($row as $column => $data){} //【!!!每行的column与value值】
echo count($row); //【结果集$row中的个数】
echo (string) $row; //返回单行结果的主键ID
var_dump($table); //object(NotORM_Result)
var_dump($id); //【!!!返回单行结果的主键ID】
var_dump($row); //object(NotORM_Row)
}
foreach ($row as $column => $data){
$res[$id][$column] = $data;
print_r($column); //表中的字段名称column,eg:id |name |age,(注意一次循环只一个值)
print_r($data); //对应【该字段】的value值,eg:01 | 张三 | 10 (注意一次循环只一个值)
}
/**
* 方法一。转换数据结构,从对象类型转换成二维数组
* @param $obj
* @return array 二维数组
*/
function get_array($obj){
$arr = array();
foreach ($obj as $objSingle) {
$arrRow = array();
foreach ($objSingle as $key => $value) {
$arrRow[$key] = $value;
}
$arr[] = $arrRow;
}
return $arr;
}
/**
* 方法二。迭代器处理,转换数据结构,从对象类型转换成二维数组,
* @param $obj
* @return array 二维数组
*/
function iterator_array($obj) {
foreach($obj as $row) { $ret[] = iterator_to_array($row); }
return $ret;
}
但是方法二lterator比方法一get_array运行效率高1.5倍
3.插入:
用一条insert插入多条数据返回第一条的数据
用一条insert插入多条数据返回第一条的数据,比第二条简介
$row = $db->$tableName()->insert($array)
Insert a row into table $tableName
and return the inserted row //返回$row = $db->$tableName()->insert($array, ...)
Insert multiple rows by a single INSERT
and return the first row//用一条insert插入多条数据返回第一条的数据
$row = $db->$tableName()->insert_multi(array($array, ...))
Insert multiple rows by a single INSERT
and return the number of inserted rows用一条insert插入多条数据返回第一条的数据,比第二条简介
$affected = $db->$tableName()->insert($result)
Insert all rows of the result into $tableName
using INSERT.. SELECT//插入查出来的info
$affected = $table->update($array)
Update all rows in table result$affected = $table->insert_update($unique, $insert, $update)
Insert row or update if it already exists,插入或更新操作,就看$unipue是否存在了$affected = $table->delete()
Delete all rows in table result$affected = $row->update($array)
Update single row$affected = $row->update()
Update single row by real modifications ($row[$column] = $value
or $row->$tableName = $row2
)$affected = $row->delete()
Delete single row$insert_id = $db->$tableName()->insert_id()
Get last insert ID$db->freeze = true
Disable persistence$insert_arr = array('uid'=>13,'text'=>'test','classid'=>111);//一条数据
$insert_arr2 = array('uid'=>13,'text'=>'test222','classid'=>222);//一条数据
$insert_arrs = array($insert_arr,$insert_arr,$insert_arr,$insert_arr,$insert_arr);//5条数据
$re = $db->img()->insert($insert_arr);//返回 object(NotORM_Row)
echo $insert_id = $db->img()->insert_id();//最后一个插入的ID
$re = $db->img()->insert($insert_arr,$insert_arr,$insert_arr,$insert_arr,$insert_arr);//返回插入的条数:5
echo $insert_id = $db->img()->insert_id();//返回插入5条中第一条的主键ID
echo $re = $db->img()->insert_multi($insert_arrs);//返回插入的条数:5
echo $insert_id = $db->img()->insert_id();//返回插入5条中第一条的主键ID
$db->img()->insert_update(array('id'=>18),$insert_arr,$insert_arr);//若id=18这条数据不存在,插入$insert_arr,存在,更新$insert_arr2,返回【插入条数|更新字段数】
4.更新:
$re = $db->img()->where('id',30);//返回 object(NotORM_Row)
$re->update($insert_arr2);//返回更新成功的条数
$db->img()->delete()//清空img表,返回删除的条数
$re= $db->img()->where('id',31);//查询出id=31的数据返回 object(NotORM_Row)
$re->delete();//删除id=31的数据,返回删除的条数,失败返回0
1 0
- NotORM使用介绍
- Slim+NotORM 简易安装
- php 数据库操作的封装 notorm框架
- php,采用slim和notorm搭建Restful轻量级curd服务层,及中文字符解决
- tiles使用介绍
- VSI使用介绍
- RPM使用介绍
- openCV使用介绍
- Log4j使用介绍
- Log4j使用介绍
- Log4j使用介绍
- Log4j使用介绍
- Log4j使用介绍
- Filter使用介绍
- dbunit介绍及使用
- winCVS使用介绍
- LCC使用介绍
- sp_executesql介绍和使用
- keepalived vrrp 协议介绍
- 关于Android:http.conn.httpHostconnectException错误
- 输入一个字符串,要求输出字符串中字符所有的排列,例如输入"abc",得到"abc","acb","bca","bac","cab","cba"
- UVA 1614Hell on the Markets 结论+贪心 (2008 NE)
- 利用百度统计的功能统计CSDN的访问数据!
- NotORM使用介绍
- Kmean聚类编写
- Linux常用命令小结
- 几种播放视频的方式
- 五大常用算法系列介绍之一:分治算法
- reason: 'UITableView failed to obtain a cell from its dataSource'
- Md5加密工具(附文件MD5值计算方法)
- Chapter 13 The Virtual FileSystem (*)
- Python 第二章-列表和元组