示例代码¶
ZendFramework-1.x 示例¶
SQL
CREATE TABLE foo (Id INT AUTO_INCREMENT PRIMARY KEY,bar VARCHAR(32), baz VARCHAR(32));
CREATE TABLE bar (Id INT AUTO_INCREMENT PRIMARY KEY,bar VARCHAR(32), baz VARCHAR(32));
CREATE TABLE "round_table" (Id INT AUTO_INCREMENT PRIMARY KEY,noble_title VARCHAR(32), first_name,VARCHAR(32), favorite_color VARCHAR(32));
CREATE TABLE LobTab (Id INT AUTO_INCREMENT PRIMARY KEY,data BLOB,text CLOB);
Query 示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
// 创建一个$db对象,然后查询数据库
// 使用完整的sql语句直接进行查询.
$result = $db->query('SELECT * FROM LOBTAB');
//print_r($result);
// // 使用PDOStatement对象$result将所有结果数据放到一个数组中
$rows = $result->fetchAll();
print_r($rows);
?>
SELECT WHERE 示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
$select = $db->select();
//
// SELECT *
// FROM round_table
// WHERE noble_title = "Sir"
// AND favorite_color = "yellow"
//
$select->from('round_table', '*');
$select->where('noble_title = \'Sir\''); // embedded value
$select->where('favorite_color = ?', 'yellow'); // quoted value
$select->orWhere('id IN(?)', array(1, 2, 3));
$result = $db->fetchAll($select);
?>
SELECT JOIN 示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
$select = $db->select();
//
// SELECT foo.*, bar.*
// FROM foo
// JOIN bar ON foo.id = bar.id
//
$select->from('foo', '*');
$select->join('bar', 'foo.id = bar.id', '*');
$result = $db->fetchAll($select);
echo "<p>";
foreach($result as $key=>$val){
echo $key;
echo "值为:";
echo $val;
echo "<p>";
}
?>
SELECT GROUP 示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
$select = $db->select();
$select->from('USER','COUNT(ID)');
$select->group('ID');
$result = $db->fetchAll($select);
echo "<p>";
foreach($result as $key=>$val){
echo $key;
echo "值为:";
print("<pre>"); // 格式化输出数组
print_r($val);
print("</pre>");
}
echo "</p>";
?>
FECTH* 示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
// 创建一个 $db对象, 然后...
// 取回结果集中所有字段的值,作为连续数组返回
$result = $db->fetchAll(
"SELECT * FROM \"round_table\" WHERE noble_title = :title",
array('title' => 'King')
);
echo "<p>";
foreach($result as $key=>$val){
echo $key;
echo "值为:";
print("<pre>"); // 格式化输出数组
print_r($val);
print("</pre>");
}
echo "</p>";
// 取回结果集中所有字段的值,作为关联数组返回
// 第一个字段作为码
$result = $db->fetchAssoc(
"SELECT * FROM \"round_table\" WHERE noble_title = :title",
array('title' => 'King')
);
print_r($result);
// 取回所有结果行的第一个字段名
$result = $db->fetchCol(
"SELECT first_name FROM \"round_table\" WHERE noble_title = :title",
array('title' => 'King')
);
print_r($result);
// 只取回第一个字段值
$result = $db->fetchOne(
"SELECT COUNT(*) FROM \"round_table\" WHERE noble_title = :title",
array('title' => 'King')
);
print_r($result);
// 取回一个相关数组,第一个字段值为码
// 第二个字段为值
$result = $db->fetchPairs(
"SELECT first_name, favorite_color FROM \"round_table\" WHERE noble_title = :title",
array('title' => 'King')
);
print_r($result);
// 只取回结果集的第一行
$result = $db->fetchRow(
"SELECT * FROM \"round_table\" WHERE first_name = :name",
array('name' => 'Arthur')
);
print_r($result);
?>
INSERT 示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
// 创建一个 $db对象, 然后...
// 以"列名"=>"数据"的格式格式构造插入数组,插入数据行
$row = array (
'data' => '0x612612667176166616671622',
'text' => 'Arthur23'
);
// 插入数据的数据表
$table = 'LOBTAB';
// i插入数据行并返回行数
$rows_affected = $db->insert($table, $row);
$last_insert_id = $db->lastInsertId();
echo 'insert_id:' . $last_insert_id . ',rows_affected:' . $rows_affected;
echo '<br/>';
?>
Update 示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
//
// UPDATE round_table
// SET favorite_color = "yellow"
// WHERE first_name = "Robin";
//
// 创建一个 $db对象, 然后...
// 以"列名"=>"数据"的格式构造更新数组,更新数据行
$set = array (
'FAVORITE_COLOR' => 'yellow',
);
// 更新的数据表
$table = 'round_table';
// where语句
$where = $db->quoteInto('ID = ?', 2);
// 更新表数据,返回更新的行数
$rows_affected = $db->update($table, $set, $where);
echo $rows_affected;
?>
LOB 示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
$path = '1.jpg';
$file=fopen($path,'rb');
//$r = fread($file,filesize($path));
// 插入数据的数据表
$table = 'LOBTAB';
#$db->beginTransaction();
// i插入数据行并返回行数
$stmt = $db->prepare('insert into LOBTAB (data,text) values (empty_blob(),:text) returning data into :data');
//$stmt = $db->prepare('insert into LOBTAB (data,text) values (:data,:text)');
$stmt->bindValue(':data', $file,PDO::PARAM_LOB);
$stmt->bindValue(':text', 'ss111d');
$stmt->execute();
$db->commit();
fclose($file);
$row = $db->fetchRow('SELECT * FROM LOBTAB WHERE ID = 2');
print_r($row);
$data = $row['DATA'];
$myfile = fopen("2.jpg", "wb");
fwrite($myfile, $data);
fclose($myfile);
?>
事务示例
<?php
require_once 'Zend/Db.php';
require_once 'Zend/Db/Select.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
// 创建一个 $db对象, 然后开始做一个事务处理.
$db->beginTransaction();
$row = array (
'data' => '0x612612667176166616671622',
'text' => 'Arthur23'
);
// 插入数据的数据表
$table = 'LOBTAB';
// 尝试数据库操作.
// 假如成功,commit该操作;
// 假如, roll back.
try {
// i插入数据行并返回行数
$rows_affected = $db->insert($table, $row);
$db->commit();
} catch (Exception $e) {
$db->rollBack();
echo $e->getMessage();
}
?>
Table 增删改查操作示例
<?php
require_once 'Zend/Db.php';
$params = array('host'=>'127.0.0.1',
'username'=>'sysdba',
'password'=>'szoscar55',
'port'=>'2003',
'dbname'=>'osrdb'
);
$db = Zend_Db::factory('PDO_Aci',$params);
// 为所有的Zend_Db_Table对象设定默认的adapter
require_once 'Zend/Db/Table.php';
Zend_Db_Table::setDefaultAdapter($db);
class RoundTable extends Zend_Db_Table {
protected $_name = 'round_table';
}
$table = new RoundTable();
// insert
$data = array(
'NOBLE_TITLE' => 'King11',
'FIRST_NAME' => 'Arthur11',
'FAVORITE_COLOR' => 'blue11',
);
$id = $table->insert($data);
echo $id;
// select
// SELECT * FROM round_table WHERE id = "1"
$row = $table->find(1);
print_r($row);
// SELECT * FROM round_table WHERE id IN("1", "2", 3")
// $rowset = $table->find(array(1, 2, 3));
// print_r($rowset);
// echo $row->id;
// update
$db = $table->getAdapter();
$set = array(
'favorite_color' => 'yellow'
);
$where = $db->quoteInto('first_name = ?', 'Robin');
$rows_affected = $table->update($set, $where);
// delete
$where = $db->quoteInto('first_name = ?', 'Patsy');
$rows_affected = $table->delete($where);
print_r($rows_affected);
?>
ZendFramework-2.x 示例¶
SQL
DROP TABLE "pdoaci_tab1";
CREATE TABLE "pdoaci_tab1" ("id" INT AUTO_INCREMENT PRIMARY KEY, "name" VARCHAR(32));
INSERT INTO "pdoaci_tab1" ("name") values ('name1'),('name2');
Query 示例
<?php
require '../load.php';
use Zend\Db\Adapter\Adapter;
$adapter = new Adapter(array(
'driver' => 'pdo_aci',
'host' => '127.0.0.1',
'port' => '2003',
'database' => 'osrdb',
'username' => 'sysdba',
'password' => 'szoscar55',
'charset' => 'utf8'
));
$users = $adapter->query("select version", Adapter::QUERY_MODE_EXECUTE);
$size = $users->count();
print_r($size);
print("\n");
$cur = $users->current();
print_r($cur);
print("\n");
SELECT 示例
<?php
require '../load.php';
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
$adapter = new Adapter(array(
'driver' => 'pdo_aci',
'host' => '127.0.0.1',
'port' => '2003',
'database' => 'osrdb',
'username' => 'sysdba',
'password' => 'szoscar55',
'charset' => 'utf8'
));
class Pdoaci_Tab1
{
public $Id;
public $Name;
public function exchangeArray($data)
{
$this->Id = (!empty($data['id'])) ? $data['id'] : null;
$this->Name = (!empty($data['name'])) ? $data['name'] : null;
}
}
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Pdoaci_Tab1());
$table_gateway = new TableGateway('pdoaci_tab1', $adapter, null, $resultSetPrototype);
$rowset = $table_gateway->select(array('id' => 1));
$row = $rowset->current();
print_r($row);
$rows = $table_gateway->select();
foreach($rows as $item)
{
print_r($item);
}
INSERT 示例
<?php
require '../load.php';
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
$adapter = new Adapter(array(
'driver' => 'pdo_aci',
'host' => '127.0.0.1',
'port' => '2003',
'database' => 'osrdb',
'username' => 'sysdba',
'password' => 'szoscar55',
'charset' => 'utf8'
));
class Pdoaci_Tab1
{
public $Id;
public $Name;
public function exchangeArray($data)
{
$this->Id = (!empty($data['id'])) ? $data['id'] : null;
$this->Name = (!empty($data['name'])) ? $data['name'] : null;
}
}
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Pdoaci_Tab1());
$table_gateway = new TableGateway('pdoaci_tab1', $adapter, null, $resultSetPrototype);
$state = $table_gateway->insert(array('name' => 'name3'));
print_r($state);
print("\n");
$rows = $table_gateway->select();
foreach($rows as $item)
{
print_r($item);
}
UPDATE 示例
<?php
require '../load.php';
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
$adapter = new Adapter(array(
'driver' => 'pdo_aci',
'host' => '127.0.0.1',
'port' => '2003',
'database' => 'osrdb',
'username' => 'sysdba',
'password' => 'szoscar55',
'charset' => 'utf8'
));
class Pdoaci_Tab1
{
public $Id;
public $Name;
public function exchangeArray($data)
{
$this->Id = (!empty($data['id'])) ? $data['id'] : null;
$this->Name = (!empty($data['name'])) ? $data['name'] : null;
}
}
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Pdoaci_Tab1());
$table_gateway = new TableGateway('pdoaci_tab1', $adapter, null, $resultSetPrototype);
$state = $table_gateway->update(array('name' => 'newname1'),array('id'=>1));
print_r($state);
print("\n");
$rows = $table_gateway->select();
foreach($rows as $item)
{
print_r($item);
}
DELETE 示例
<?php
require '../load.php';
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
$adapter = new Adapter(array(
'driver' => 'pdo_aci',
'host' => '127.0.0.1',
'port' => '2003',
'database' => 'osrdb',
'username' => 'sysdba',
'password' => 'szoscar55',
'charset' => 'utf8'
));
class Pdoaci_Tab1
{
public $Id;
public $Name;
public function exchangeArray($data)
{
$this->Id = (!empty($data['id'])) ? $data['id'] : null;
$this->Name = (!empty($data['name'])) ? $data['name'] : null;
}
}
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Pdoaci_Tab1());
$table_gateway = new TableGateway('pdoaci_tab1', $adapter, null, $resultSetPrototype);
$state = $table_gateway->delete(array('id' => 2));
print_r($state);
print("\n");
$rows = $table_gateway->select();
foreach($rows as $item)
{
print_r($item);
}