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 + -
显示快捷键?