MysqL数据库 DB类 ,方便学习PHP的朋友,用类方便扩展,不建议初级用户,可以等熟悉了MysqL的数据库操作函数以后再用,要不以后函数都记乱了
<?PHP
/*
* @package db
* @author yytcpt(无影)
* @version 2008-03-27
* @copyrigth http://www.d5s.cn/
*/
class db {
var $connection_id = "";
var $pconnect = 0;
var $shutdown_queries = array();
var $queries = array();
var $query_id = "";
var $query_count = 0;
var $record_row = array();
var $Failed = 0;
var $halt = "";
var $query_log = array();
function connect($db_config){
if ($this->pconnect){
$this->connection_id = MysqL_pconnect($db_config["hostname"],$db_config["username"],$db_config["password"]);
}else{
$this->connection_id = MysqL_connect($db_config["hostname"],$db_config["password"]);
}
if ( ! $this->connection_id ){
$this->halt("Can not connect MysqL Server");
}
if ( ! @MysqL_select_db($db_config["database"],$this->connection_id) ){
$this->halt("Can not connect MysqL Database");
}
if ($db_config["charset"]) {
@MysqL_unbuffered_query("SET NAMES '".$db_config["charset"]."'");
}
return true;
}
function query($query_id,$query_type='MysqL_query'){
$this->query_id = $query_type($query_id,$this->connection_id);
$this->queries[] = $query_id;
if (! $this->query_id ) {
$this->halt("查询失败:n$query_id");
}
$this->query_count++;
$this->query_log[] = $str;
return $this->query_id;
}
function query_unbuffered($sql=""){
return $this->query($sql,'MysqL_unbuffered_query');
}
//从结果集中取得一行作为关联数组
function fetch_array($sql = ""){
if ($sql == "") $sql = $this->query_id;
$this->record_row = @MysqL_fetch_array($sql,MysqL_ASSOC);
return $this->record_row;
}
function shutdown_query($query_id = ""){
$this->shutdown_queries[] = $query_id;
}
//取得结果集中行的数目,仅对 INSERT,UPDATE 或者 DELETE
function affected_rows() {
return @MysqL_affected_rows($this->connection_id);
}
//取得结果集中行的数目,仅对 SELECT 语句有效
function num_rows($query_id="") {
if ($query_id == "") $query_id = $this->query_id;
return @MysqL_num_rows($query_id);
}
function get_errno(){
$this->errno = @MysqL_errno($this->connection_id);
return $this->errno;
}
//取得上一步 INSERT 操作产生的 ID
function insert_id(){
return @MysqL_insert_id($this->connection_id);
}
function query_count() {
return $this->query_count;
}
//释放结果内存
function free_result($query_id=""){
if ($query_id == "") $query_id = $this->query_id;
@MysqL_free_result($query_id);
}
function close_db(){
if ( $this->connection_id ) return @MysqL_close( $this->connection_id );
}
function get_table_names(){
global $db_config;
$result = MysqL_list_tables($db_config["database"]);
$num_tables = @MysqL_numrows($result);
for ($i = 0; $i < $num_tables; $i++) {
$tables[] = MysqL_tablename($result,$i);
}
MysqL_free_result($result);
return $tables;
}
//从结果集中取得列信息并作为对象返回,取得所有字段
function get_result_fields($query_id=""){
if ($query_id == "") $query_id = $this->query_id;
while ($field = MysqL_fetch_field($query_id)) {
$fields[] = $field;
}
return $fields;
}
function halt($the_error=""){
$message = $the_error."<br/>rn";
$message.= $this->get_errno() . "<br/>rn";
$sql = "INSERT INTO `db_error`(pagename,errstr,timer) VALUES('".$_SERVER["PHP_SELF"]."','".addslashes($message)."',".time().")";
@MysqL_unbuffered_query($sql);
if (DEBUG==true){
echo "<html><head><title>MysqL 数据库错误</title>";
echo "<style type="text/css"><!--.error { font: 11px tahoma,verdana,arial,sans-serif,simsun; }--></style></head>rn";
echo "<body>rn";
echo "<blockquote>rn";
echo "<textarea class="error" rows="15" cols="100" wrap="on" >" . htmlspecialchars($message) . "</textarea>rn";
echo "</blockquote>rn</body></html>";
exit;
}
}
function __destruct(){
$this->shutdown_queries = array();
$this->close_db();
}
function sql_select($tbname,$where="",$limit=0,$fields="*",$orderby="id",$sort="DESC"){
$sql = "SELECT ".$fields." FROM `".$tbname."` ".($where?" WHERE ".$where:"")." ORDER BY ".$orderby." ".$sort.($limit ? " limit ".$limit:"");
return $sql;
}
function sql_insert($tbname,$row){
foreach ($row as $key=>$value) {
$sqlfield .= $key.",";
$sqlvalue .= "'".$value."',";
}
return "INSERT INTO `".$tbname."`(".substr($sqlfield,-1).") VALUES (".substr($sqlvalue,-1).")";
}
function sql_update($tbname,$row,$where){
foreach ($row as $key=>$value) {
$sqlud .= $key."= '".$value."',";
}
return "UPDATE `".$tbname."` SET ".substr($sqlud,-1)." WHERE ".$where;
}
function sql_delete($tbname,$where){
return "DELETE FROM `".$tbname."` WHERE ".$where;
}
//新增加一条记录
function row_insert($tbname,$row){
$sql = $this->sql_insert($tbname,$row);
return $this->query_unbuffered($sql);
}
//更新指定记录
function row_update($tbname,$where){
$sql = $this->sql_update($tbname,$where);
return $this->query_unbuffered($sql);
}
//删除满足条件的记录
function row_delete($tbname,$where){
$sql = $this->sql_delete($tbname,$where);
return $this->query_unbuffered($sql);
}
/* 根据条件查询,返回所有记录
* $tbname 表名,$where 查询条件,$limit 返回记录,$fields 返回字段
*/
function row_select($tbname,$sort="DESC"){
$sql = $this->sql_select($tbname,$where,$limit,$fields,$orderby,$sort);
return $this->row_query($sql);
}
//详细显示一条记录
function row_select_one($tbname,$orderby="id"){
$sql = $this->sql_select($tbname,1,$orderby);
return $this->row_query_one($sql);
}
function row_query($sql){
$rs = $this->query($sql);
$rs_num = $this->num_rows($rs);
$rows = array();
for($i=0; $i<$rs_num; $i++){
$rows[] = $this->fetch_array($rs);
}
$this->free_result($rs);
return $rows;
}
function row_query_one($sql){
$rs = $this->query($sql);
$row = $this->fetch_array($rs);
$this->free_result($rs);
return $row;
}
//计数统计
function row_count($tbname,$where=""){
$sql = "SELECT count(id) as row_sum FROM `".$tbname."` ".($where?" WHERE ".$where:"");
$row = $this->row_query_one($sql);
return $row["row_sum"];
}
}
?>
在实际中的应用示例:
<?PHP
$db_config["hostname"] = "127.0.0.1"; //服务器地址
$db_config["username"] = "root"; //数据库用户名
$db_config["password"] = "root"; //数据库密码
$db_config["database"] = "wap_blueidea_com"; //数据库名称
$db_config["charset"] = "utf8";
$db = new db();
$db->connect($db_config);
//例:查询表 table_name 中 cid=1的所有记录。
$row = $db->row_select('table_name','cid=1');
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。