php如何操作mysql数据库代码_php如何操作mysql数据库的类(附代码)

这篇文章主要介绍了php简单操作mysql数据库的类,涉及php操作mysql的连接、查询、插入、删除等基本操作方法,非常具有实用价值,需要的朋友可以参考下。<?php

/**

* Database class

*

* @version: 2.2

* @revised: 27 may 2007

*

**/

class Database {

var $host;

var $name;

var $user;

var $pass;

var $prefix;

var $linkId;

function Database($mysql) {

foreach($mysql as $k => $v){

$this->$k = $v;

}

if(strlen($this->prefix)>0 && substr($this->prefix, -1) !== "_")

$prefix .= "_";

$this->prefix = $prefix;

}

function getLastID() {

$id = mysql_fetch_row(mysql_query("SELECT LAST_INSERT_ID()", $this->linkId));

return $id[0];

}

function getPossibleValues($tableA, $whereA) {

if(gettype($tableA) == "array") {

$table = "";

foreach($tableA as $t) {

$table .= $this->prefix.$t.", ";

}

$table = substr($table, 0, -2);

} else $table = $this->prefix.$tableA;

if(gettype($whereA) != "array") {

$whereA = array($whereA);

}

$return = array();

foreach($whereA as $where) {

$sql = mysql_query("SHOW COLUMNS FROM ".$table." LIKE '%".$where."%'");

while($arr = mysql_fetch_array($sql)) {

if(strpos($arr['Type'], 'enum')===0) {

$vals = substr($arr['Type'], 5, -1);

} else {

$vals = substr($arr['Type'], 4, -1);

}

$vals = str_replace("'","",$vals);

$vals = explode(",",$vals);

$i = 1;

foreach($vals as $val) {

$return[$arr['Field']][$i++] = $val;

}

$return[$arr['Field']]['default'] = $arr['Default'];

if($arr['Null'] != "NO") $return[$arr['Field']][0] = NULL;

}

}

return $return;

}

function connect() {

$this->linkId = mysql_connect($this->host, $this->user, $this->pass);

if(!$this->linkId) {

return false;

}

if(mysql_select_db($this->name, $this->linkId)) return true;

mysql_close($this->linkId);

return false;

}

function runSelect($tables, $where = "1", $fieldsA = "*", $order = false, $limit = false, $offset = false, $group = false) {

if(gettype($tables) == "array") {

$table = "";

foreach($tables as $t) {

$table .= $this->prefix.$t.", ";

}

$table = substr($table, 0, -2);

} else $table = $this->prefix.$tables;

if(gettype($fieldsA) == "array") {

$fields = "";

$keys = array_keys($fieldsA);

if($keys[0] != '0') {

foreach($keys as $key) {

$fields .= $key.' AS '.$fieldsA[$key].', ';

}

} else {

foreach($fieldsA as $field) {

$fields .= $field.', ';

}

}

$fields = substr($fields, 0, -2);

} else $fields = $fieldsA;

$query = "SELECT ".$fields." FROM ".$table." WHERE ".$where.

($order!== false?" ORDER BY ".$order:($group!==false ? " GROUP BY ".$group : "")).

($limit !== false?" LIMIT ".$limit:"").

($offset !== false?" OFFSET ".$offset:"");

return mysql_query($query, $this->linkId);

}

function runUpdate($table, $valuesA, $where = "1") {

if(gettype($valuesA) == "array") {

$fields = "";

$values = "";

$keys = array_keys($valuesA);

foreach($keys as $key) {

if($valuesA[$key] !== NULL)

$values .= "`".$key."`='".str_replace("'",'\'', $valuesA[$key])."',";

else

$values .= $key."=NULL,";

}

$fields = substr($fields, 0, -1);

$values = substr($values, 0, -1);

} else $values = $valuesA;

$query = "UPDATE ".$this->prefix.$table." SET ".$values." WHERE ".$where;

if(mysql_query($query,

$this->linkId))

return mysql_affected_rows($this->linkId);

return false;

}

function runDelete($table, $where = "1") {

if(mysql_query("DELETE FROM ".$this->prefix.$table." WHERE ".$where, $this->linkId))

return mysql_affected_rows($this->linkId);

return false;

}

function runInsert($table, $valuesA, $onDuplicate = NULL) {

if(gettype($valuesA) == "array") {

$fields = "";

$values = "";

$keys = array_keys($valuesA);

foreach($keys as $key) {

$fields .= "`".$key."`, ";

$values .= ($valuesA[$key]===NULL?"NULL, ":"'".str_replace("'", '\'', $valuesA[$key])."', ");

}

$fields = substr($fields, 0, -2);

$values = substr($values, 0, -2);

}

$onDup = "";

if($onDuplicate != NULL) {

$onDup = " ON DUPLICATE KEY UPDATE ";

if(gettype($onDuplicate) == "array") {

$keys = array_keys($onDuplicate);

foreach($keys as $key) {

$onDup .= '`'.$key.'`='.($onDuplicate[$key]===NULL?"NULL,":"'".str_replace("'", '\'', $onDuplicate[$key])."', ");

}

$onDup = substr($onDup, 0, -2);

} else $onDup .= $onDuplicate;

}

$query = "INSERT INTO ".$this->prefix.$table.($fields!==NULL?"(".$fields.")":"").

" VALUES (".$values.")".$onDup;

if(mysql_query($query, $this->linkId))

return mysql_affected_rows($this->linkId);

return false;

}

function getCells($table){

$query = "SHOW COLUMNS FROM `".$table."`";

$fields = mysql_query($query, $this->linkId) or die('hej');

return $fields;

}

function translateCellName($cellName){

$sql = $this->runSelect("mysql_cell_translation","mysql_name = '".$cellName."'");

$row = mysql_fetch_assoc($sql);

return $row['human_name']?$row['human_name']:'['.$cellName.']';

}

function getError() {

return mysql_error($this->linkId);

}

function close()

{

mysql_close($this->linkId);

}

}

?>

【相关教程推荐】

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

插件之基类窗体

基类窗体要实现的需求包括&#xff1a;控件窗体的字体&#xff0c;权限控制&#xff0c;控制子窗体的显示范围&#xff0c;以及其它一些通用方法的声明。。。。。。 通用方法可声明为VIRTUAL方法&#xff0c;以允许从它继承的子窗体 可以OVERRIDE这些方法&#xff0c;达到多态的…

网络编程模型综述 之 成熟的IO框架介绍

ACE “重量级的C I/O框架&#xff0c;用面向对象实现了一些I/O策略和其它有用的东西&#xff0c;特别是它的Reactor是用OO方式处理非阻塞I/O&#xff0c;而Proactor是用OO方式处理异步I/O的( In particular, his Reactor is an OO way of doing nonblocking I/O, and Proactor …

python解释型语言的区别_什么是解释型语言?

你女网友只懂中文(源代码)&#xff0c;你只懂英文(机器码/CPU指令)&#xff0c;现在你俩要搞对象&#xff0c;怎么办&#xff1f;我假设你已经看过一些搜索文章了&#xff0c;但还是觉得不直观&#xff0c;所以能搜到的我就不写了。女网友写下了自己的&#xff1a;要求.py:二号…

网络编程模型综述 之 多线程模型

每个连接对应一个线程 一个网络socket对应一个处理线程&#xff0c;socket采用阻塞I/O模型&#xff1b; 这种模型是小程序和java常用的策略&#xff0c;对于交互式的长连接应用也是常见的选择(比如BBS)&#xff0c;也常用来做内部服务器交互的模型。这种策略很难满足高性能程序…

已知两边求角度公式_有30度角的直角三角形,已知一直角边,求另两边的公式,快速求法...

有30度角的直角三角形&#xff0c;已知一直角边&#xff0c;求另两边的公式&#xff0c;快速求法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;有30度角的直角三角形&#xff0c;已知一直角…

jQuery 实现一个简单的信息反馈或者信息收集的页面

部分技术&#xff1a; jquery Form validation .NET handler ASP.NET Email notification.页面为简单的纯HTML Js 定义&#xff0c;提交表单通过jQuery 进行表单验证&#xff0c;提示友好的验证信息。表单验证成功 &#xff0c;使用jQuery ajax 提交到ASP.NET 后台代码 Han…

网络编程模型综述 之 UNIX网络I/O模型

阻塞I/O Socket设置为阻塞模式&#xff0c;当socket不能立即完成I/O操作时&#xff0c;进程或线程进入等待状态&#xff0c;直到操作完成。如下图&#xff1a; 这种模型非常经典&#xff0c;也被广泛使用&#xff0c;优势在于非常简单&#xff0c;等待的过程中占用的系统资源微…

久等了,41连开班仪式!

送走2011&#xff0c;迎来了饱受争议的2012年。据玛雅语言说&#xff0c;世界末日将出现在2012年。不过截至笔者发稿之时&#xff0c;还没有天地间的巨变&#xff0c;不过这才2月份&#xff0c;未来的事情不好说&#xff08;这里修改了一下&#xff0c;开始说2012不是世界末日&…

Linux网络编程一步一步学-select详解

select系统调用是用来让我们的程序监视多个文件描述符(file descriptor)的状态变化的。程序会停在select这里等待&#xff0c;直到被监视的文件描述符有某一个或多个发生了状态改变。select函数原型如下&#xff1a;int select(int nfds, fd_set *readfds, fd_set *writefds, f…

java 调用 go_实践总结:在 Java 中调用 Go 代码

在 Java 中调用 Go 的大致过程如下go --> cgo --> jna --> java整个过程要解决的问题主要两个&#xff1a;数据类型在两种语言中如何转化何时清理无用的数据下面就围绕上述调用过程来阐述&#xff0c;本文涉及代码完整版可以下面链接找到&#xff1a;Go -> Cgo这是…

大叔手记(21):汤姆大叔博客园开博100天总结

介绍 昨天是注册博客园的第100天&#xff0c;截止到今天大叔发了99篇帖子&#xff0c;加上今天这篇总共100篇&#xff0c;想来也应该来个总结了&#xff0c;本来是昨天写总结的&#xff0c;但由于加班&#xff0c;于是挪到今天了。 为何开博 博客这种事物在兴起的时候就已经知道…

Linux网络编程一步一步学-异步通讯聊天程序select

什么是异步通讯&#xff1f; 就是通讯任意一方可以任意发送消息&#xff0c;有消息来到时会收到系统提示去接收消息。 这里要用到select函数。使用步骤如下&#xff1a; 1、设置一个集合变量&#xff0c;用来存放所有要判断的句柄&#xff08;file descriptors&#xff1a;即我…

matlab中读取txt数据文件(txt文本文档)

根据txt文档不同种类介绍不同的读取数据方法 一、纯数据文件&#xff08;没有字母和中文&#xff0c;纯数字&#xff09; 对于这种txt文档&#xff0c;从matalb中读取就简单多了 例如test.txt文件&#xff0c;内容为 17.901 -1.1111 33.045 17.891 -1.1286 33.045 17.884 -1.13…

ubuntu默认root密码

安装完Ubuntu后忽然意识到没有设置root密码&#xff0c;不知道密码自然就无法进入根用户下。到网上搜了一下&#xff0c;原来是这麽回事。Ubuntu的默认root密码是随机的&#xff0c;即每次开机都有一个新的root密码。我们可以在终端输入命令 sudo passwd&#xff0c;然后输入当…

java $和$$的区别_Java #{}和${}区别

Mybatis中使用#{}可以防止sql注入#{}: 表示一个占位符号,实现向PreparedStatement占位符中设置值(#{}表示一个占位符?),自动进行Java类型到JDBC类型的转换(因此#{}可以有效防止SQL注入).#{}可以接收简单类型或PO属性值,如果parameterType传输的是单个简单类型值,#{}花括号中可…

基于xml技术的操作

Xml是一种存放文件的一个文件格式&#xff0c;在程序的开发中应用很广泛&#xff0c;下面就来看看如何通过DOM的方式处理Xml格式的数据。DOM(Document Object Model,文档对象模型)&#xff0c;DOM是处理Xml数据的国际通用数据模型&#xff0c;由于Xml以元素为单位&#xff0c;就…

half-sync/half-async 和 Leader/Followers 模式的主要区别

在 《POSA2》 一书中&#xff0c;关于这两个模式有两个很形象的比喻&#xff1a;半同步/半异步&#xff08;half-sync/half-async&#xff09;&#xff1a;许多餐厅使用 半同步/半异步 模式的变体。例如&#xff0c;餐厅常常雇佣一个领班负责迎接顾客&#xff0c;并在餐厅繁忙时…

JAVA中的IO系统详解

Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符&#xff0c;分别操作字符、字符数组或字符串&#xff0c;而字节流处理单元为 1 个字节&#xff0c;操作字节和字节数组。 Java 内用 Unicode 编码存储字符&#xff0c;字符流处理类负责将外部…

将Linux下编译的warning警告信息输出到文件中

Linux中&#xff0c;脚本语言环境中&#xff0c;即你用make xxx即其他一些普通 linux 命令&#xff0c;比如ls&#xff0c;find等&#xff0c;不同的数字&#xff0c;代表不同的含义&#xff1a; 数字 含义标准叫法0标准输入stdin standard input1标准输出stdout standard o…

java 内部编码_Java 中文编码分析

一、charAt 与 codePonitAt我们知道 Java 内部使用的是 utf-16 作为它的 char、String 的字符编码方式&#xff0c;这里我们叫它内部字符集。而 utf-16 是变长编码&#xff0c;一个字符的编码被称为一个 code point&#xff0c;它可能是 16 位 —— 一个 code unit&#xff0c;…