了解Zend中的数据库组件

澳门新葡亰平台游戏网站 18

Ajax异步获取目的内容所耗的年华相比.方法1.
MVC的方式访谈目录对象的钦定函数,施行查询语句
方法2.直接创设sql语句和数据库连接,实践查询语句
.方法3.ZendFramework的Zend_Db实行查询语句Html代码:input
type=textname=username id=username
onblur=’cek.checkUser(卡塔尔(قطر‎’/将实践以下Js代码:复制内容到剪贴板Var cek =
{checkUser : function(userState of Qatar {if(!$(‘modify’).value ||
$(‘default_user’).value != $(userState of Qatar.value卡塔尔 {var url =
?mod=adminfile=sysmethod=checkusername;//var url = ‘test.php;//var url =
‘../private/zend/index.php’;var pars = ”;var myAjax = new
Ajax.Request(url,{method:’get’,parameters:pars,onComplete:function(contents卡塔尔国{}}卡塔尔(قطر‎;}}}方法1.以MVC格局达成连接数据库并实行查询语句的作用,?mod=adminfile=sysmethod=checkusername所实施的代码如下:复制内容到剪贴板$application
= new SysAction;$application-checkusername(State of Qatar;Class sysAction {Function
checkusername(卡塔尔 {$link = new DbLink(卡塔尔(قطر‎; $rs =
$link-checkUser(username=craneState of Qatar;}}共创制多个对象.SysAction,DbLink,所耗费时间间如下:GET(63ms卡塔尔GET(62ms卡塔尔国GET(62ms卡塔尔GET(62msState of QatarGET(62ms卡塔尔国GET(63ms卡塔尔(قطر‎方法2.直接连接数据库,并实践查询语句.
test.php所试行代码如下:复制内容到剪贴板$db =
mysql_connect(‘localhost’,’root’,’123456′);mysql_select_db(‘test’);$sql
= select * from table where username=’crane’;$result =
mysql_query($sql,$db);while($row = mysql_fetch_array($resultState of QatarState of Qatar{}所耗费时间间如下:GET (15ms卡塔尔(قطر‎GET (15msState of QatarGET (15ms卡塔尔(قطر‎GET (15ms卡塔尔国GET (15ms卡塔尔国GET
(15msState of Qatar方法3.ZendFramework框架中Zend_Db类,实践查询语句,../private/zend/index.php代码如下.
主文件部分代码.复制内容到剪贴板$frontController
=Zend_Controller_Front::getInstance(卡塔尔国;$frontController-throwExceptions(true卡塔尔;$frontController-setControllerDirectory(‘application/controllers’卡塔尔国;$frontController-dispatch(卡塔尔(قطر‎;调节器部分代码:复制内容到剪贴板require_once
‘Zend/Db.php’;class IndexController extendsZend_Controller_Action
{function init() {}functionindexAction() {$params= array(host=
‘localhost’,username= ‘root’,password= ‘123456’,’dbname’ =
‘test’);//$user= ‘crane’;$db=
Zend_Db::factory(‘PDO_MYSQL’,$params);$select=
$db-select();$select-from(‘table’,’username’)-where($db-quoteInto(‘username=?’,’crane’));$sql=
$select-__toString(State of Qatar;$result= $db-fetchAll($sql卡塔尔国;}}所耗费时间间如下:GET
(125ms卡塔尔国GET (141ms卡塔尔国GET (110msState of QatarGET (141ms卡塔尔GET (109msState of QatarGET
(141msState of Qatar测验意况:Windows NT 5.1 build 2600Apache 2.0PHP 5.2.5Mysql
5.0.45Zend Optimizer
v3.3.0PHP的面向对象长期以来就有对立,这里仅是在异步调用时所耗的日子比较。Mysql与php质量最优的条件当然是lamp,有意思味的可以尝试在最简最优情况下测量检验一下。PHP使用对象比不选拔对象更耗费时间间是料定的,但PHP的cache和静态化对品种的速度增进有决定性的意思,大型项指标费用,这种机制是必备的。这里所做的测量检验,仅仅表达区别须求的项目,可接收分化的落到实处方式,没须要凡用必OO^_^

那编作品,首倘若做些测验的东西,就是摸底Zend中的数据库组件的选取,熟知流程。

首先复习一下数据库的幼功内容,不含有数学标题。

复习的事例超多是出自于书上的。

1. 表

澳门新葡亰平台游戏网站 1

有了三个表,就须求将其映射到三个类中。

澳门新葡亰平台游戏网站 2

其一类轻巧描叙了银行顾客

2. 关联

多对多涉及

类的表示

澳门新葡亰平台游戏网站 3

SQL表

澳门新葡亰平台游戏网站 4

多对多关系,是将关系收取到三个新表中完结的。

一对多关系:

澳门新葡亰平台游戏网站 5

澳门新葡亰平台游戏网站 6

澳门新葡亰平台游戏网站 7

一对多关系中,多方,都有三个外键,连接到一方

一对一关乎

澳门新葡亰平台游戏网站 8

澳门新葡亰平台游戏网站 9

澳门新葡亰平台游戏网站 10

限制关联:

澳门新葡亰平台游戏网站 11

澳门新葡亰平台游戏网站 12

那边增加了bank_ID,account_code,且是unique属性,意思是点名的银行通过点名的账户号码,能够找到一个账号。

继承

澳门新葡亰平台游戏网站 13

澳门新葡亰平台游戏网站 14

留意这里增加了account_type
,存款和储蓄子类的表名,通过这些字段,能够找到对应的子类

澳门新葡亰平台游戏网站 15

地点已经温习了类和数据库的有个别关联。

上边是现实性到代码,基于Zend
Framework的数据库组件,用到的数据表是下边包车型大巴。会助长一点点数量来测量检验。

数据库连接:

使用Zend_DB_艾达pter
,那么些目的的获得是因此工厂方法来收获,那样能够使这么些组件扶持多样类型的数据库。

这里最主要写写MySQL的连续几天。别的的查阅文书档案

澳门新葡亰平台游戏网站,$param = array(

‘username’=>’root’,

‘password’=>’123456’,

‘dbname’=>’test’

);

$db = Zend_db::factory(‘MYSQLI’,$param);

print_r($db);

诸如此比就足以打字与印刷出类相关的音讯。证明三番五次成功了。

查询语句:

先给Customer添增多少。

insert into Customer values(0,’user1′,0);

insert into Customer values(1,’user2′,0);

查询:

$Sql = “select * from Customer”;

$result = $db->query($Sql);

$row = $result->fetchAll();

安插语句:

$id = 3;

$param = array(

‘username’=>’root’,

‘password’=>’123456’,

‘dbname’=>’test’

);

$db = Zend_db::factory(‘MYSQLI’,$param);

$val = array(

‘customer_ID’=>$id,

‘cust_name’=>’user’.$id,

‘temp_amount’=>12

);

$table = ‘Customer’;

$rowAffect = $db->insert($table,$val);

echo $rowAffect;

地点的插入极度例牌。在动用那样的插入语句的时候,会活动给变量的值加双引号。

上面是结果

澳门新葡亰平台游戏网站 16

询问重回可以用以下的章程来拍卖:再次来到结果恐怕结果集

· fetchAll()

· fetchAssoc()

· fetchCol()

· fetchOne()

· fetchPairs()

· fetchRow()

独家测量试验一下。

$param = array(

‘username’=>’root’,

‘password’=>’123456’,

‘dbname’=>’test’

);

$db = Zend_db::factory(‘MYSQLI’,$param);

$table = ‘Customer’;

//再次回到全数行,作为数组

$sql = “select * from Customer”;

$result = $db->fetchAll($sql);

print_r($result);

//再次回到全部行,作为数组,结果与上亦然

$result = $db->fetchAssoc($sql);

print_r($result);

//重返全体行的率先个字段,感到在布局语句时要不选取具备

$result = $db->fetchCol($sql);

print_r($result);

//重临一行,作为数组

$result = $db->fetchOne($sql);

print_r($result);

//重回全数行,第多少个字段作为key,第二个字段作为val,是二个数组

$result = $db->fetchPairs($sql);

print_r($result);

//再次来到一行。

$result = $db->fetchRow($sql);

print_r($result);

修正语句:

$param = array(

‘username’=>’root’,

‘password’=>’123456’,

‘dbname’=>’test’

);

$db = Zend_db::factory(‘MYSQLI’,$param);

$set = array(

‘cust_name’=>’updateusername’

);

/*此间不应当用这么的情势,会不安全

$where = ‘customer_ID = 3’;

*/

$where = $db->quoteInto(‘customer_ID=?’,3);

$table = ‘Customer’;

$rowAffect = $db->update($table,$set,$where);

echo $rowAffect;

结果如下:

澳门新葡亰平台游戏网站 17

删去语句:

$param = array(

‘username’=>’root’,

‘password’=>’123456’,

‘dbname’=>’test’

);

$db = Zend_db::factory(‘MYSQLI’,$param);

$table = ‘Customer’;

$where = $db->quoteinto(‘customer_ID=?’,3);

$rowAffect =
$db->delete($table,$where);

echo $rowAffect;

结果:

澳门新葡亰平台游戏网站 18

除开下边的法子外,还应该有更为有益于更加多职能的机件能够兑现对数据库的操作。

固然选拔statement组件。

测量试验的主意与地点相似。由于一切是印度语印尼语,或许会某些错误。今后要在乎改善。

创建statement

$param = array(

‘username’=>’root’,

‘password’=>’123456’,

‘dbname’=>’test’

);

$db = Zend_db::factory(‘MYSQLI’,$param);

$table = ‘Customer’;

//使用select,show,desc来回到结果集

$sql1 = “select * from Customer”;

$sql2 = “show tables”;

$sql3 = “desc Customer”;

$stm1 = $db->query($sql1);

$stm2 = $db->query($sql2);

$stm3 = $db->query($sql3);

//使用statement的布局函数,使用了预布局sql语句,statement的施行措施,问号参数

$sql4 = “select * from Customer where customer_ID = ?”;

$stm4 = new Zend_Db_Statement_Mysqli($db,$sql4);

$stm4->execute(array(‘1’));

//使用名字参数,这里运维错误,看来MySQL是不帮助这么些点子了。

/*

$sqlname = “select * from Customer where customer_ID = :id”;

$stmname = new Zend_Db_Statement_Mysqli($db,$sqlname);

$stmname->execute(array(“:id”=>’1′));

*/

//一行一行再次来到全体数据:自动移动到下一行,未有则赶回FALSE

//由于地点不断的施行,所以要重新实施

$stmFetch = new Zend_Db_Statement_Mysqli($db,$sql1);

$stmFetch->execute();

while ($row class=”underline”>= class=”underline”>$stmFetch class=”underline”>->fetch()){

echo $row[‘cust_name’].'<br/>’;

}

//重回全体数据,指针移动到最后

$rows = $stmFetch->fetchAll();

for($i=0;$i<count($rows);$i++){

echo $rows[‘cust_name’];

}

//改变fetch模式

$num = new Zend_Db_Statement_Mysqli($db,$sql1);

$num->execute();

$num->setFetchMode(Zend_Db::FETCH_NUM);

$rows = $num->fetchAll();

print_r($rows);

//再次回到一行钦点的列,通过数字来钦赐

$column = new Zend_Db_Statement_Mysqli($db,$sql1);

$column->execute();

$rowcol = $column->fetchColumn(1);

echo $rowcol;

//重临三个指标,这么些某些不领悟用在哪里

$obj = new Zend_Db_Statement_Mysqli($db,$sql1);

$obj->execute();

$rowobj = $obj->fetchObject();

print_r($rowobj);

Select 组件:

正是给查询专用的机件,通过db_adapter来获得,推行全体办法都是回来二个字符串,用于组合成查询语句,比小编写的查询语句生成,高端多的东西了。今后有机遇显著要过得硬看看他的代码。下边是测验的代码,详细请看扶助文档。

$param = array

(

‘username’=>’root’,

‘password’=>’123456’,

‘dbname’=>’test’

);

$db = Zend_Db::factory(‘MySqli’,$param);

$select = $db->select();

//随意弄的查询

$select->from(‘Customer’,’*’)

->where(‘customer_ID=1’);

$rows = $db->query($select);

print_r($rows->fetchAll());

unset($select);

//查询多列数据

$select = $db->select();

$select->from(‘Customer’,array(‘customer_ID’,’cust_name’));

$rows = $db->query($select);

$rows = $rows->fetchAll();

print_r($rows);

unset($select);

//多表联合查询,对于此外协作查询,参数一致

$select = $db->select();

//select * from Customer join address on address.customer_ID =
customer.Customer_ID

$select->from(‘Customer’,’*’);

$select->join(‘address’,’address.Customer_ID =
Customer.Customer_ID’);

$rows = $db->query($select);

$rows = $rows->fetchAll();

print_r($rows);

unset($select);

//where语句的and和or

$select = $db->select();

//select * from Customer join address on address.customer_ID =
customer.Customer_ID

$select->from(‘Customer’,’*’);

$select->where(‘customer_ID=?’,1);

$rows = $db->query($select);

$rows = $rows->fetchAll();

print_r($rows);

unset($select);

//Group By 语句

$select = $db->select();

//select * from Customer join address on address.customer_ID =
customer.Customer_ID

$select->from(‘Customer’,’count(customer_ID)’);

$select->group(array(‘temp_amount’));

$rows = $db->query($select);

$rows = $rows->fetchAll();

print_r($rows);

unset($select);

//Having语句

$select = $db->select();

//select * from Customer join address on address.customer_ID =
customer.Customer_ID

$select->from(‘Customer’,’count(customer_ID) as id’);

$select->group(array(‘temp_amount’));

$select->having(‘id=2’);

$rows = $db->query($select);

$rows = $rows->fetchAll();

print_r($rows);

unset($select);

//order by语句

$select = $db->select();

//select * from Customer join address on address.customer_ID =
customer.Customer_ID

$select->from(‘Customer’,’*’);

$select->order(‘customer_ID desc’);

$rows = $db->query($select);

$rows = $rows->fetchAll();

print_r($rows);

unset($select);

//limit 语句

$select = $db->select();

//select * from Customer join address on address.customer_ID =
customer.Customer_ID

$select->from(‘Customer’,’*’);

$select->order(‘customer_ID desc’);

$select->limit(1,1);

$rows = $db->query($select);

$rows = $rows->fetchAll();

print_r($rows);

unset($select);

//翻页效能

$select = $db->select();

//select * from Customer join address on address.customer_ID =
customer.Customer_ID

$select->from(‘Customer’,’*’);

$select->order(‘customer_ID desc’);

$select->limitPage(1,1);

$rows = $db->query($select);

$rows = $rows->fetchAll();

print_r($rows);

unset($select);

底子语法到此截止,下一篇将是更高级的事物,也是最要紧的东西,期望本身快点学懂

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图