example.php
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 260 行
PHP
260 行
<?php// +----------------------------------------------------------------------+// | PHP Version 4 |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group |// +----------------------------------------------------------------------+// | This source file is subject to version 2.02 of the PHP license, |// | that is bundled with this package in the file LICENSE, and is |// | available at through the world-wide-web at |// | http://www.php.net/license/2_02.txt. |// | If you did not receive a copy of the PHP license and are unable to |// | obtain it through the world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +----------------------------------------------------------------------+// | Authors: Wolfram Kriesing, Paolo Panto, vision:produktion <wk@visionp.de>// | Lorenzo Alberton <l.alberton@quipo.it> |// +----------------------------------------------------------------------+//// $Id: example.php,v 1.3 2003/05/10 00:10:00 quipo Exp $//require_once 'MDB/QueryTool.php';// change this!!!!! and the DSN to your DB$DB_BACKEND = 'pgsql';$DB_BACKEND = 'mysql';define ('TABLE_TIME', 'time');// the mysql setup!if ($DB_BACKEND == 'mysql') { $dbDSN = 'mysql://root@localhost/test'; define ('TABLE_USER', 'user');}// postgreSQL setup, use PEAR::DB >1.4b1if ($DB_BACKEND == 'pgsql') { $dbDSN = "pgsql://test:test@/test"; define ('TABLE_USER', 'uuser'); // user is a reserved word in postgres} class user extends MDB_QueryTool{ var $table = TABLE_USER; var $sequenceName = TABLE_USER; // this is default, but to demonstrate it here ... var $primaryCol = 'id'; /** * this table spec assigns a short name to a table name * this short name is needed in case the table name changes * i.e. when u put the appl on a providers db, where you have to prefix * each table, and you dont need to change the entire appl to where you refer * to joined table columns, for that joined results the short name is used * instead of the table name */ var $tableSpec = array( array('name' => TABLE_USER, 'shortName' => 'user') ,array('name' => TABLE_TIME, 'shortName' => 'time') );}// this set an error-callback method, which will be called in case something really went wrong// you can use 'setErrorLogCallback' to define the callback method for log-messages - non critical.// and you can use 'setErrorSetCallback' to define a callback for errors which prevent the query// from properly executing$user = new user($dbDSN, array('errorCallback'=>'myPrint'));//$user->setErrorCallback('myPrint'); this could be used too//// 1//// get a single entry with a given 'id'headline('$user->get(3)');$user->reset(); // reset the query-builder, so no where, order, etc. are set$res = $user->get(3);myPrint($res);// query: SELECT * FROM user WHERE id=3//// 2//// get all entries from the tableheadline('$user->getAll()');$user->reset(); // reset the query-builder, so no where, order, etc. are set$res = $user->getAll();myPrint($res);// query: SELECT * FROM user//// 3//// get the first 10 entries from the table (LIMIT 0,10)headline('$user->getAll(0,10)');$user->reset(); // reset the query-builder, so no where, order, etc. are set$res = $user->getAll(0,10);myPrint($res);// query: SELECT * FROM user LIMIT 0,10//// 4//// get all data where the id>3headline('using setWhere');$user->reset(); // reset the query-builder, so no where, order, etc. are set$user->setWhere('id>3');$res = $user->getAll();myPrint($res);// query: SELECT * FROM user WHERE id>3//// 5//// setting multiple query-partsheadline('using set[Where,Order,Group]');$user->reset(); // reset the query-builder, so no where, order, etc. are set// for proper SQL92 i think we need to select only the col we use in group// in mysql you can also leave out the following line$user->setSelect('name');$user->setWhere('name IS NOT NULL');$user->setOrder('name');$user->setGroup('name');$res = $user->getAll();myPrint($res);// query: SELECT * FROM user WHERE name IS NOT NULL GROUP BY name ORDER BY name//// 6//// setting multiple query-partsheadline('using setIndex');$user->reset(); // reset the query-builder, so no where, order, etc. are set$user->setIndex('name');$res = $user->getAll();myPrint($res);// query: SELECT * FROM user// the result-array is indexed by 'name'//// 7//// setting multiple query-partsheadline('using setIndex using 2 columns!');$user->reset(); // reset the query-builder, so no where, order, etc. are set$user->setIndex('name,surname');$res = $user->getAll();myPrint($res);// query: SELECT * FROM user// the result-array is indexed by 'name,surname'//// 8//// join the table 'time' this automatically detects where there are// columns that refer to one another, this uses a regExp that you can simply// modify (see $_tableNamePreg and $_columnNamePreg), by default this maps// stuff like 'user_id'=>'user.id'headline('using autoJoin');$user->reset(); // reset the query-builder, so no where, order, etc. are set$user->autoJoin('time');$user->setOrder('surname');$res = $user->getAll();myPrint($res);// query: SELECT * FROM user,time WHERE user.id=time.user_id ORDER BY surname//// 9//// does the same as the example above// only that you have to hardcode the join by hand, no autoJoin hereheadline('using setJoin instead of autoJoin');$user->reset(); // reset the query-builder, so no where, order, etc. are set$user->setJoin('time',TABLE_USER.'.id=time.user_id');$user->setOrder('surname');$res = $user->getAll();myPrint($res);// query: SELECT * FROM user,time WHERE user.id=time.user_id ORDER BY surname//// 10//headline('adding data using $user->save($data)');$data = array('login'=>'new','name'=>'foo','surname'=>'bar');$fooBarId = $user->save($data);myPrint($fooBarId);// query: INSERT INTO user (id,login,name,surname) VALUES (<sequences>,"new","foo","bar")//// 11//headline('updating using $user->save($data)');$data = array('id'=>$fooBarId,'login'=>'NEW','name'=>'Mr. foo');$res = $user->save($data);myPrint($res);// query: UPDATE user (id,login,name,surname) VALUES (<sequences>,"new","foo","bar")//// 12//headline('updating using $user->update($data)');$res = $user->update($data);myPrint($res);// query: UPDATE user (id,login,name,surname) VALUES (<sequences>,"new","foo","bar")//// 13//headline("remove the entry \$user->remove($fooBarId)");$res = $user->remove($fooBarId);myPrint($res);// query: DELETE FROM "uuser" WHERE "id" = $fooBarId//// helper functions//function headline( $string='' ){ global $headlineCnt; if( $string ) { $headlineCnt++; print "<h1>$headlineCnt - $string</h1>"; }}function myPrint($data){ print "<pre>"; print_r($data); print '</pre>';}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?