分享
 
 
 

PHP 的 MySQL 操作类,跟手册上的函数一样用,但是更方便了。多说无益,看了就知道了。

王朝mysql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

<?php

class DummyMySQLClass{

var $DBHost = ''; /* 数据库主机名称 */

var $DBUser = ''; /* 数据库用户名称 */

var $DBPswd = ''; /* 数据库密码 */

var $DBName = ''; /* 数据库名称 */

var $Result = NULL; /* private */

var $LinkId = NULL; /* private */

var $Record = NULL; /* 包含一条记录的内容 */

var $Rows = 0;

var $MustBeHalt = true; /* 有了错误立即停止 */

var $RecordCase = NULL; /* 只在 nextRecord() 和 f()方法里出现 */

function DummyMySQLClass($DBHost = '', $DBUser = '', $DBPswd = '', $DBName = '', $newLink = false){

if(is_array($DBHost)){

$DBHost = $DBHost[0];

$DBUser = $DBHost[1];

$DBPswd = $DBHost[2];

$DBName = $DBHost[3];

$newLink = empty($DBHost[4])?false:$DBHost[4];

}elseif(str_replace(array("/", "@"), array("", ""), $DBHost) != $DBHost){

$dsn = $this->splitDSN($DBHost);

$DBTpye = $dsn[0];

$DBHost = $dsn[1].":".$dsn[2];

$DBUser = $dsn[3];

$DBPswd = $dsn[4];

$DBName = $dsn[5];

$newLink = $dsn[6] == ''?$newLink:$dsn[6];

}

$this->DBHost = empty($DBHost)?$this->DBHost:$DBHost;

$this->DBUser = empty($DBUser)?$this->DBUser:$DBUser;

$this->DBPswd = empty($DBPswd)?$this->DBPswd:$DBPswd;

$this->DBName = empty($DBName)?$this->DBName:$DBName;

if(!empty($DBHost)){

$this->connect($this->DBHost, $this->DBUser, $this->DBPswd, $newLink);

}

if(!empty($DBName)){

$this->selectDB($DBName);

}

}

function splitDSN($dsn){

//$dsn = "数据库类型名称://入口帐号:入口密码@数据库主机名:端口号/数据库名/是否总是打开新的连接";

//$dsn = "MySQL://Dummy:123@localhost:3306/tetx/false";

$dsn = preg_split("/[:\/@]/", $dsn);

$DBTpye = '';

$DBHost = '';

$DBPort = '';

$DBUser = '';

$DBPswd = '';

$DBName = '';

$DBNewLink = false;

$DBTpye = $dsn[0];

$DBHost = $dsn[5];

$DBPort = $dsn[6];

$DBUser = $dsn[3];

$DBPswd = $dsn[4];

$DBName = $dsn[7];

$DBNewLink = $dsn[8];

return array($DBTpye, $DBHost, $DBPort, $DBUser, $DBPswd, $DBName, $DBNewLink);

}

function affectedRows(){ /* 取得前一次 MySQL 操作所影响的记录行数 */

return mysql_affected_rows($this->LinkId);

}

function changeUser($user, $password){ /* 改变活动连接中登录的用户 */

return mysql_change_user($user, $password, $this->DBName, $this->LinkId);

}

function clientEncoding(){ /* 返回字符集的名称 */

return mysql_client_encoding($this->LinkId);

}

function close(){ /* 关闭 MySQL 连接 */

$close = mysql_close($this->LinkId);

$this->LinkId = NULL;

$this->Result = NULL;

$this->Record = NULL;

return $close;

}

function connect($DBHost = '', $DBUser = '', $DBPswd = '', $newLink = false){//, int client_flags){ /* 打开一个到 MySQL 服务器的连接 */

$connect = @mysql_connect(empty($DBHost)?$this->DBHost:$DBHost, empty($DBUser)?$this->DBUser:$DBUser, empty($DBPswd)?$this->DBPswd:$DBPswd, $newLink);

if(!is_resource($connect)){

$this->halt("连接数据库失败!", 1);

return false;

}

$this->LinkId = $connect;

return true;

}

function createDB($DBName){ /* 新建一个 MySQL 数据库 */

return @mysql_create_db($DBName, $this->LinkId) or die($this->halt("创建数据库 ".$DBName." 失败!"));

}

function dataSeek($rowNumber){ /* 移动内部结果的指针 */

return mysql_data_seek($this->Result, $rowNumber);

}

function dbName($row, $field = NULL){ /* 取得结果数据 */

if(empty($field)){

return mysql_db_name($this->Result, $row);

}

return mysql_db_name($this->Result, $row, $field);

}

function dbQuery($DBName, $queryString){ /* 发送一条 MySQL 查询 */

$this->Result = mysql_db_query($DBName, $queryString, $this->LinkId);

return $this->Result?true:false;

}

function dropDB($DBName){ /* 丢弃(删除)一个 MySQL 数据库 */

return mysql_drop_db($DBName, $this->LinkId);

}

function errno(){ /* 返回上一个 MySQL 操作中的错误信息的数字编码 */

return mysql_errno($this->LinkId);

}

function error(){ /* 返回上一个 MySQL 操作产生的文本错误信息 */

return mysql_error($this->LinkId);

}

function escapeString($unescapedString){ /* 转义一个字符串用于 mysql_query */

return mysql_escape_string($unescapedString);

}

function fetchArray($Rows = 0, $resultType = MYSQL_BOTH){ /* 从结果集中取得一行作为关联数组,或数字数组,或二者兼有 */

if(!is_resource($this->Result)){

return false;

}

$fetchArray = mysql_fetch_array($this->Result, $resultType);

if($fetchArray && $Rows){$this->Rows++;}

return $fetchArray;

}

function fetchAssoc($Rows = 0){ /* 从结果集中取得一行作为关联数组 */

if(!is_resource($this->Result)){

return false;

}

$fetchAssoc = mysql_fetch_assoc($this->Result);

if($fetchAssoc && $Rows){$this->Rows++;}

return $fetchAssoc;

}

function fetchField($fieldOffset = NULL){ /* 从结果集中取得列信息并作为对象返回 */

if(empty($fieldOffset)){

return mysql_fetch_field($this->Result, $fieldOffset);

}

return mysql_fetch_field($this->Result);

}

function fetchLengths(){ /* 取得结果集中每个输出的长度 */

return mysql_fetch_lengths($this->Result);

}

function fetchObject($Rows = 0){ /* 从结果集中取得一行作为对象 */

if(!is_resource($this->Result)){

return false;

}

$fetchObject = mysql_fetch_object($this->Result);

if(is_object($fetchObject) && $Rows){$this->Rows++;}

return is_object($fetchObject)?$fetchObject:false;

}

function fetchRow($Rows = 0){ /* 从结果集中取得一行作为枚举数组 */

if(!is_resource($this->Result)){

return false;

}

$fetchRow = mysql_fetch_row($this->Result);

if($fetchRow && $Rows){$this->Rows++;}

return $fetchRow;

}

function fieldFlags($fieldOffset){ /* 从结果中取得和指定字段关联的标志 */

return mysql_field_flags($this->Result, $fieldOffset);

}

function fieldLen($fieldOffset){ /* 返回指定字段的长度 */

return mysql_field_len($this->Result, $fieldOffset);

}

function fieldName($fieldIndex){ /* 取得结果中指定字段的字段名 */

return mysql_field_name($this->Result, $fieldIndex);

}

function fieldSeek($fieldOffset){ /* 将结果集中的指针设定为制定的字段偏移量 */

return mysql_field_seek($this->Result, $fieldOffset);

}

function fieldTable($fieldOffset){ /* 取得指定字段所在的表名 */

return mysql_field_table($this->Result, $fieldOffset);

}

function fieldType($fieldOffset){ /* 取得结果集中指定字段的类型 */

return mysql_field_type($this->Result, $fieldOffset);

}

function freeResult(){ /* 释放结果内存 */

return mysql_free_result($this->Result);

}

function getClientInfo(){ /* 取得 MySQL 客户端信息 */

return mysql_get_client_info();

}

function getHostInfo(){ /* 取得 MySQL 主机信息 */

return mysql_get_host_info($this->LinkId);

}

function getProtoInfo(){ /* 取得 MySQL 协议信息 */

return mysql_get_proto_info($this->LinkId);

}

function getServerInfo(){ /* 取得 MySQL 服务器信息 */

return mysql_get_server_info($this->LinkId);

}

function info(){ /* 取得最近一条查询的信息 */

return mysql_info($this->LinkId);

}

function insertId(){ /* 取得上一步 INSERT 操作产生的 ID */

return mysql_insert_id($this->LinkId);

}

function listDBs(){ /* 列出 MySQL 服务器中所有的数据库 */

$this->Result = mysql_list_dbs($this->LinkId);

return $this->Result?true:false;

}

function listFields($DBName, $tableName){ /* 列出 MySQL 结果中的字段 */

$this->Result = mysql_list_fields($DBName, $tableName, $this->LinkId);

return $this->Result?true:false;

}

function listProcesses(){ /* 列出 MySQL 进程 */

$this->Result = mysql_list_processes($this->LinkId);

return $this->Result?true:false;

}

function listTables($DBName = ''){ /* 列出 MySQL 数据库中的表 */

$DBName = empty($DBName)?$this->DBName:$DBName;

$this->Result = mysql_list_tables($DBName, $this->LinkId);

return $this->Result?true:false;

}

function numFields(){ /* 取得结果集中字段的数目 */

return mysql_num_fields($this->Result);

}

function numRows(){ /* 取得结果集中行的数目 */

return mysql_num_rows($this->Result);

}

function pconnect($DBHost = '', $DBUser = '', $DBPswd = ''){ /* 打开一个到 MySQL 服务器的持久连接 */

$connect = @mysql_pconnect(empty($DBHost)?$this->DBHost:$DBHost, empty($DBUser)?$this->DBUser:$DBUser, empty($DBPswd)?$this->DBPswd:$DBPswd);

if(!is_resource($connect)){

$this->halt("连接数据库失败!",1);

return false;

}

$this->LinkId = $connect;

return true;

}

function ping(){ /* Ping 一个服务器连接,如果没有连接则重新连接 */

return mysql_ping($this->LinkId);

}

function query($queryString){ /* 发送一条 MySQL 查询 */

if(empty($queryString)){

$this->halt("SQL 语句为空!", 1);

return false;

}

if(!is_resource($this->LinkId)){

$this->halt("请先确保数据库已经连接上!", 1);

return false;

}

$this->Result = mysql_query($queryString, $this->LinkId);// or die(mysql_error());//print_r($this);

return $this->Result?true:false;

}

function realEscapeString($unescapedString){ /* 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 */

return mysql_real_escape_string($unescapedString, $this->LinkId);

}

function result($row, $field = NULL){ /* 取得结果数据 */

if(empty($field)){

return mysql_result($this->Result, $row, $field);

}

return mysql_result($this->Result, $row);

}

function selectDB($DBName = 'test'){ /* 选择 MySQL 数据库 */

return mysql_select_db(empty($DBName)?$this->$DBName:$DBName, $this->LinkId);

}

function stat(){ /* 取得当前系统状态 */

return mysql_stat($this->LinkId);

}

function tablename($index){ /* 取得表名 */

return mysql_tablename($this->Result, $index);

}

function threadId(){ /* 返回当前线程的 ID */

return mysql_thread_id($this->LinkId);

}

function unbufferedQuery($queryString){ /* 向 MySQL 发送一条 SQL 查询,并不获取和缓存结果的行 */

$this->Result = mysql_unbuffered_query($queryString,$this->LinkId);

return $this->Result?true:false;

}

/*-- 上面的方法名跟手册上 MySQL 的那些函数名是一对一的,除了“splitDSN”和“构造函数” --*/

/*-- 下面是扩展,也就是说下面的这些方法在手册上是找不到影子的 --*/

function free(){ /* 释放结果内存,效果 freeResult 一样,只是这样简单些,少写几个字母,算是别名吧~ ^_^ */

return $this->freeResult();

}

function setMustBeHalt($MustBeHalt = false){

$this->MustBeHalt = $MustBeHalt;

}

function getMustBeHalt(){

return $this->MustBeHalt;

}

/* 以下是支持事物扩展 */

function setAutoCommit($AutoCommit = 1){ /* 默认为不支持事务 */

mysql_query("SET AUTOCOMMIT = ".$AutoCommit);

}

function begin(){ /* 事务开始 */

@mysql_query("LOCK TABLES");

@mysql_query("UNLOCK TABLES");

$this->setAutoCommit(0);

mysql_query("BEGIN");

}

function rollback(){ /* 回滚,继续默认的不支持事务 */

mysql_query("ROLLBACK");

@mysql_query("UNLOCK TABLES");

$this->setAutoCommit(1);

}

function commit(){ /* 事务结束,继续默认的不支持事务 */

mysql_query("COMMIT");

@mysql_query("UNLOCK TABLES");

$this->setAutoCommit(1);

}

/* 以上是支持事物扩展 */

function getRows(){ /* 取得已经读出的数据记录数 */

return $this->Rows;

}

function getDBName(){

return $this->DBName;

}

function nextRecord($resultType = 0){ /* 跟 phplib 接轨,同 phplib 的 next_record */

$record = NULL;

switch($resultType){

case 1:

$record = @mysql_fetch_assoc($this->Result);

$this->RecordCase = 1;

break;

case 2:

$record = @mysql_fetch_row($this->Result);

$this->RecordCase = 2;

break;

case 3:

$record = @mysql_fetch_object($this->Result);

$this->RecordCase = 3;

break;

default:

$record = @mysql_fetch_array($this->Result);

$this->RecordCase = 0;

break;

}

if(is_resource($record)){

$this->Record = $record;

}else{

return false;

}

}

function f($fieldName){ /* 跟 phplib 接轨 */

switch($this->RecordCase){

case 3:

return is_object($this->Record)?$this->Record->$fieldName:NULL;

break;

default:

return $this->Record[$fieldName];

break;

}

}

/* 下面的自己可以定义格式 */

function halt($msg = "未知错误!", $MustBeHalt = 0){

echo $msg;

if($MustBeHalt !== 0 || $this->getMustBeHalt()){

die();

}

}

/* 下面的可要可不要,因为得PHP5才行 */

function __get($nm){

if(isset($this->$nm)){

//

}else{

$this->halt("没有的成员变量 :$nm\n",1);

}

}

function __set($nm, $val){

//

}

function __call($m, $a){

print "<hr>调用不存在的方法——".$m."(".join(",",$a).")!\n";

echo '<pre>';

var_dump($a);

echo '</pre>';

$this->halt("<hr>");

}

} // End DummyMySQLClass

?>

<?php

/**

function __autoload($className) {

include_once $className . ".php";

}

$DMC = new DummyMySQLClass("localhost","root","","test");

//print_r($DMC);

*/

//---------------------------------------------------------

//---------------------------------------------------------

//---------------------------------------------------------

/**4

$DMC->query("SELECT * FROM `purchase_product` LIMIT 1");

while($fetchObject = $DMC->fetchObject(3)){

echo $DMC->fieldName(0).'<br>'; // 效果如:ID

echo $DMC->fieldType(0).'<br>';

echo $DMC->fieldLen(0).'<br>'; // 效果如:9

print_r($DMC->fieldFlags(0)); // 效果如:not_null primary_key auto_increment

echo '<hr>合起来的效果:<br>';

echo '`'.$DMC->fieldName(0).'` '.$DMC->fieldType(0).'('.$DMC->fieldLen(0).') '.str_replace(array("NOT_NULL","PRIMARY_KEY"),array("NOT NULL","PRIMARY KEY"),strtoupper($DMC->fieldFlags(0))).",\n<br>";

}

//下面这是秘籍!!^_^

$DMC->query("show create table `purchase_product`");

while($fetchObject = $DMC->fetchObject(3)){

$t = 'Create Table';print_r($fetchObject->$t);

}

*/

//---------------------------------------------------------

/**4

echo "getHostInfo() --- ".$DMC->getHostInfo().'<br>';

echo "getClientInfo() - ".$DMC->getClientInfo().'<br>';

echo "getProtoInfo() -- ".$DMC->getProtoInfo().'<br>';

echo "getServerInfo() - ".$DMC->getServerInfo().'<br>';

echo "info() ---------- ".$DMC->info().'<br>';

*/

//---------------------------------------------------------

/**3

//取得指定库的所有表

$DMC->listTables("test");

while($row = $DMC->fetchRow()){

print "Table: ".$row[0]."\n";

}

//下面for的效果跟上面while的一样

for ($i = 0; $i < $DMC->numRows(); $i++){

printf ("Table: %s\n", $DMC->tablename($i));

}

*/

//---------------------------------------------------------

/**2

//数据查询

$DMC->query("SELECT * FROM `purchase_product` LIMIT 1");

while($fetchObject = $DMC->fetchObject(3)){

print_r($fetchObject);

print_r($DMC->fetchLengths()); // 是记录的长度,不是字段的长度

//print_r($DMC);

}

*/

//---------------------------------------------------------

/**1

// 取得指定库指定表名称的字段

$DMC->listFields("test","purchase_product");

$a = $DMC->numFields();

for($i=0; $i<$a; $i++){

echo $DMC->fieldName($i).' ';

}

*/

/////////////////////////////////////////////////

// //

// 环境:PHP5.0.2 + APACHE:2.0.52 +Win2Kp_sp4 //

// //

/////////////////////////////////////////////////

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有