|
<?php /* * Session Management for PHP3 * * Copyright (c) 1998-2000 NetUSE AG * Boris Erdmann, Kristian Koehntopp * * $Id: db_mysql.inc,v 1.2 2000/07/12 18:22:34 kk Exp $ * */
class DB_Sql { /* public: connection parameters */ var $Host = ""; var $Database = ""; var $User = ""; var $Password = "";
/* public: configuration parameters */ var $Auto_Free = 0; ## Set to 1 for automatic mysql_free_result() var $Debug = 0; ## Set to 1 for debugging messages. var $Halt_On_Error = "yes"; ## "yes" (halt with message), "no" (ignore errors quietly), "report" (ignore errror, but spit a warning) var $Seq_Table = "db_sequence";
/* public: result array and current row number */ var $Record = array(); var $Row;
/* public: current error number and error text */ var $Errno = 0; var $Error = "";
/* public: this is an api revision, not a CVS revision. */ var $type = "mysql"; var $revision = "1.2";
/* private: link and query handles */ var $Link_ID = 0; var $Query_ID = 0; var $sql = "";
/* public: constructor */ function DB_Sql($query = "") { $this->query($query); }
/* public: some trivial reporting */ function link_id() { return $this->Link_ID; }
function query_id() { return $this->Query_ID; }
/* public: connection management */ function connect($Database = "", $Host = "", $User = "", $Password = "") { /* Handle defaults */ if ("" == $Database) $Database = $this->Database; if ("" == $Host) $Host = $this->Host; if ("" == $User) $User = $this->User; if ("" == $Password) $Password = $this->Password; /* establish connection, select database */ if ( 0 == $this->Link_ID ) { $this->Link_ID=mysql_pconnect($Host, $User, $Password); if (!$this->Link_ID) { $this->halt("pconnect($Host, $User, \$Password) failed."); return 0; }
if (!@mysql_select_db($Database,$this->Link_ID)) { $this->halt("cannot use database ".$this->Database); return 0; } } return $this->Link_ID; }
/* public: discard the query result */ function free() { @mysql_free_result($this->Query_ID); $this->Query_ID = 0; }
/* public: perform a query */ function query($Query_String) { /* No empty queries, please, since PHP4 chokes on them. */ if ($Query_String == "") /* The empty query string is passed on from the constructor, * when calling the class without a query, e.g. in situations * like these: '$db = new DB_Sql_Subclass;' */ return 0;
if (!$this->connect()) { return 0; /* we already complained in connect() about that. */ };
# New query, discard previous result. if ($this->Query_ID) { $this->free(); }
if ($this->Debug) printf("Debug: query = %s<br>\n", $Query_String);
$this->Query_ID = @mysql_query($Query_String,$this->Link_ID); $this->Row = 0; $this->Errno = mysql_errno(); $this->Error = mysql_error(); if (!$this->Query_ID) { $this->halt("Invalid SQL: ".$Query_String); }
# Will return nada if it fails. That's fine. return $this->Query_ID; }
/* public: walk result set */ function next_record() { if (!$this->Query_ID) { $this->halt("next_record called with no query pending."); return 0; }
$this->Record = @mysql_fetch_array($this->Query_ID); $this->Row += 1; $this->Errno = mysql_errno(); $this->Error = mysql_error();
$stat = is_array($this->Record); if (!$stat && $this->Auto_Free) { $this->free(); } return $stat; } /* public: insert record */ function insert( $table, $data) { if ( is_array( $data ) ) { $this->sql = "INSERT INTO $table ( `".implode( "` , `" , array_keys($data) )."` ) VALUES ( '".implode( "' , '", array_values($data) )."' )"; } else { die("<strong>Error</strong> : Data Empty! "); } return $this->query( $this->sql ); } /* public: delete record */ function delete( $table, $where = "", $limit = 0 ) { $this->sql = "DELETE FROM $table "; $this->sql .= $this->where($where); $this->sql .= intval($limit) ? " LIMIT ". intval($limit) : ""; return $this->query( $this->sql ); } /* public: update record */ function update( $table, $update = "", $where = "", $limit = 0 ) { $setword = ""; if( is_array( $update ) ) { while ( list( $field, $value ) = each($update) ) { $setword .= $setword ? " , " : ""; $setword .= "`$field` = '".$value."'"; } }else { $setword = $update; } $this->sql = "UPDATE $table SET $setword "; $this->sql .= $this->where($where); $this->sql .= intval($limit) ? " LIMIT ". intval($limit) : ""; return $this->query( $this->sql ); } /* public: count record */ function recordcount( $table, $where = "" ) { $this->sql = "SELECT COUNT(*) FROM $table " . $this->where($where); $this->query( $this->sql ); if( $this->next_record() ) { return $this->f(0); }else { return 0; } } /* public: select record */ function select( $table, $fields = "*", $where = "", $order = "", $group = "", $limit = 10 ) { } /* public: set where */ function where( $where ) { $condition = ""; if( is_array( $where ) ) { foreach( $where as $key => $val ){ if( preg_match( "/^\d*$/", $key ) ) {//or foreach( $val as $k => $v ) { $condition .= $condition ? " OR ( `$k` = '".implode( "' AND `$k` = '", $v )."' )" : " WHERE ( `$k` = '".implode( "' AND `$k` = '", $v )."')"; } }else {//and $condition .= $condition ? " AND ( `$key` = '".implode( "' OR `$key` = '", $val )."')" : " WHERE ( `$key` = '".implode( "' OR `$key` = '", $val )."')"; } } }else { $condition .= " ".$where; } return $condition; } /* public: show sql */ function showsql() { return $this->sql; } /* public: position in result set */ function seek($pos = 0) { $status = @mysql_data_seek($this->Query_I [1] [2] [3] 下一页
 |
频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。
| 原始作者:佚名 |
录入时间:2006-11-9 |
| 信息来源:不详 |
投稿信箱:itqoo@126.com |
|
|
 |
|