peardb_wrapper.php
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 576 行 · 第 1/2 页
PHP
576 行
<?php// +----------------------------------------------------------------------+// | PHP Version 4 |// +----------------------------------------------------------------------+// | Copyright (c) 1998-2004 Manuel Lemos, Tomas V.V.Cox, |// | Stig. S. Bakken, Lukas Smith |// | All rights reserved. |// +----------------------------------------------------------------------+// | MDB is a merge of PEAR DB and Metabases that provides a unified DB |// | API as well as database abstraction for PHP applications. |// | This LICENSE is in the BSD license style. |// | |// | Redistribution and use in source and binary forms, with or without |// | modification, are permitted provided that the following conditions |// | are met: |// | |// | Redistributions of source code must retain the above copyright |// | notice, this list of conditions and the following disclaimer. |// | |// | Redistributions in binary form must reproduce the above copyright |// | notice, this list of conditions and the following disclaimer in the |// | documentation and/or other materials provided with the distribution. |// | |// | Neither the name of Manuel Lemos, Tomas V.V.Cox, Stig. S. Bakken, |// | Lukas Smith nor the names of his contributors may be used to endorse |// | or promote products derived from this software without specific prior|// | written permission. |// | |// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |// | FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |// | REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |// | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |// | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS|// | OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED |// | AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |// | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY|// | WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |// | POSSIBILITY OF SUCH DAMAGE. |// +----------------------------------------------------------------------+// | Author: Lukas Smith <smith@backendmedia.com> |// +----------------------------------------------------------------------+//// $Id: peardb_wrapper.php,v 1.32.4.2 2004/04/08 17:19:01 lsmith Exp $///* * The method mapErrorCode in each MDB_dbtype implementation maps * native error codes to one of these. * * If you add an error code here, make sure you also add a textual * version of it in DB::errorMessage(). */define('DB_OK', MDB_OK);define('DB_ERROR', MDB_ERROR);define('DB_ERROR_SYNTAX', MDB_ERROR_SYNTAX);define('DB_ERROR_CONSTRAINT', MDB_ERROR_CONSTRAINT);define('DB_ERROR_NOT_FOUND', MDB_ERROR_NOT_FOUND);define('DB_ERROR_ALREADY_EXISTS', MDB_ERROR_ALREADY_EXISTS);define('DB_ERROR_UNSUPPORTED', MDB_ERROR_UNSUPPORTED);define('DB_ERROR_MISMATCH', MDB_ERROR_MISMATCH);define('DB_ERROR_INVALID', MDB_ERROR_INVALID);define('DB_ERROR_NOT_CAPABLE', MDB_ERROR_NOT_CAPABLE);define('DB_ERROR_TRUNCATED', MDB_ERROR_TRUNCATED);define('DB_ERROR_INVALID_NUMBER', MDB_ERROR_INVALID_NUMBER);define('DB_ERROR_INVALID_DATE', MDB_ERROR_INVALID_DATE);define('DB_ERROR_DIVZERO', MDB_ERROR_DIVZERO);define('DB_ERROR_NODBSELECTED', MDB_ERROR_NODBSELECTED);define('DB_ERROR_CANNOT_CREATE', MDB_ERROR_CANNOT_CREATE);define('DB_ERROR_CANNOT_DELETE', MDB_ERROR_CANNOT_DELETE);define('DB_ERROR_CANNOT_DROP', MDB_ERROR_CANNOT_DROP);define('DB_ERROR_NOSUCHTABLE', MDB_ERROR_NOSUCHTABLE);define('DB_ERROR_NOSUCHFIELD', MDB_ERROR_NOSUCHFIELD);define('DB_ERROR_NEED_MORE_DATA', MDB_ERROR_NEED_MORE_DATA);define('DB_ERROR_NOT_LOCKED', MDB_ERROR_NOT_LOCKED);define('DB_ERROR_VALUE_COUNT_ON_ROW', MDB_ERROR_VALUE_COUNT_ON_ROW);define('DB_ERROR_INVALID_DSN', MDB_ERROR_INVALID_DSN);define('DB_ERROR_CONNECT_FAILED', MDB_ERROR_CONNECT_FAILED);define('DB_ERROR_EXTENSION_NOT_FOUND', MDB_ERROR_EXTENSION_NOT_FOUND);define('DB_ERROR_ACCESS_VIOLATION', MDB_ERROR_ACCESS_VIOLATION);define('DB_ERROR_NOSUCHDB', MDB_ERROR_NOSUCHDB);define('DB_WARNING', -1000);define('DB_WARNING_READ_ONLY', -1001);define('DB_PARAM_SCALAR', MDB_PARAM_SCALAR);define('DB_PARAM_OPAQUE', MDB_PARAM_OPAQUE);define('DB_PARAM_MISC', MDB_PARAM_MISC);define('DB_BINMODE_PASSTHRU', MDB_BINMODE_PASSTHRU);define('DB_BINMODE_RETURN', MDB_BINMODE_RETURN);define('DB_BINMODE_CONVERT', MDB_BINMODE_CONVERT);define('DB_FETCHMODE_DEFAULT', MDB_FETCHMODE_DEFAULT);define('DB_FETCHMODE_ORDERED', MDB_FETCHMODE_ORDERED);define('DB_FETCHMODE_ASSOC', MDB_FETCHMODE_ASSOC);define('DB_FETCHMODE_OBJECT', 3);define('DB_FETCHMODE_FLIPPED', MDB_FETCHMODE_FLIPPED);define('DB_GETMODE_ORDERED', DB_FETCHMODE_ORDERED);define('DB_GETMODE_ASSOC', DB_FETCHMODE_ASSOC);define('DB_GETMODE_FLIPPED', DB_FETCHMODE_FLIPPED);define('DB_TABLEINFO_ORDER', MDB_TABLEINFO_ORDER);define('DB_TABLEINFO_ORDERTABLE', MDB_TABLEINFO_ORDERTABLE);define('DB_TABLEINFO_FULL', MDB_TABLEINFO_FULL);define('DB_AUTOQUERY_INSERT', 1);define('DB_AUTOQUERY_UPDATE', 2);/** * Wrapper that makes MDB behave like PEAR DB * * @package MDB * @category Database * @author Lukas Smith <smith@backendmedia.com> */class DB{ function &factory($type) { $db =& MDB::factory($type); if(PEAR::isError($db)) { return($db); } $obj =& new MDB_PEAR_PROXY($db); return($obj); } function &connect($dsn, $options = FALSE) { if (!is_array($options) && $options) { $options['persistent'] = TRUE; } $db =& MDB::connect($dsn, $options); if(PEAR::isError($db)) { return($db); } $obj =& new MDB_PEAR_PROXY($db); return($obj); } function apiVersion() { return(2); } function isError($value) { return(MDB::isError($value)); } function isManip($query) { return(MDB::isManip($query)); } function errorMessage($value) { return(MDB::errorMessage($value)); } function parseDSN($dsn) { return(MDB::parseDSN($dsn)); } function assertExtension($name) { if (!extension_loaded($name)) { $dlext = OS_WINDOWS ? '.dll' : '.so'; @dl($name . $dlext); } return extension_loaded($name); }}/** * MDB_Error implements a class for reporting portable database error * messages. * * @package MDB * @category Database * @author Stig Bakken <ssb@fast.no> */class DB_Error extends PEAR_Error{ function DB_Error($code = DB_ERROR, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE, $debuginfo = NULL) { if (is_int($code)) { $this->PEAR_Error('DB Error: ' . DB::errorMessage($code), $code, $mode, $level, $debuginfo); } else { $this->PEAR_Error("DB Error: $code", DB_ERROR, $mode, $level, $debuginfo); } }}/** * Wrapper that makes MDB behave like PEAR DB * * @package MDB * @category Database * @author Lukas Smith <smith@backendmedia.com> */class DB_result{ var $dbh; var $result; var $row_counter = NULL; var $limit_from = NULL; var $limit_count = NULL; function DB_result(&$dbh, $result) { $this->dbh = &$dbh; $this->result = $result; } function fetchRow($fetchmode = DB_FETCHMODE_DEFAULT, $rownum = 0) { $arr = $this->dbh->fetchInto($this->result, $fetchmode, $rownum); if(is_array($arr)) { return($arr); } else { return(NULL); } } function fetchInto(&$arr, $fetchmode = DB_FETCHMODE_DEFAULT, $rownum = 0) { $arr = $this->dbh->fetchInto($this->result, $fetchmode, $rownum); if(MDB::isError($arr)) { return($arr); } if($arr === NULL) { return($arr); } return(DB_OK); } function numCols() { return($this->dbh->numCols($this->result)); } function numRows() { return($this->dbh->numRows($this->result)); } function nextResult() { return($this->dbh->nextResult($this->result)); } function free() { $err = $this->dbh->freeResult($this->result); if(MDB::isError($err)) { return($err); } $this->result = FALSE; return(TRUE); } function tableInfo($mode = NULL) { return($this->dbh->tableInfo($this->result, $mode)); } function getRowCounter() { return($this->dbh->highest_fetched_row[$this->result]); }}class DB_row{ function DB_row(&$arr) { for (reset($arr); $key = key($arr); next($arr)) { $this->$key = &$arr[$key];
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?