PHP
·
发表于 5年以前
·
阅读量:8303
本文实例讲述了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']:'<span class="faded">['.$cellName.']</span>';
}
function getError() {
return mysql_error($this->linkId);
}
function close()
{
mysql_close($this->linkId);
}
}
?>
希望本文所述对大家的php+mysql数据库程序设计有所帮助。