• 技术文章 >后端开发 >php教程

    php mysql数据库操作类_php实例

    2016-06-07 17:26:33原创313
    复制代码 代码如下:

    /*
    * mysql数据库 DB类
    * @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["username"], $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;
    }
    //发送SQL 查询,并返回结果集
    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;
    }
    //发送SQL 查询,并不获取和缓存结果的行
    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);
    }
    //返回上一个 MySQL 操作中的错误信息的数字编码
    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);
    }
    //关闭 MySQL 连接
    function close_db(){
    if ( $this->connection_id ) return @mysql_close( $this->connection_id );
    }
    //列出 MySQL 数据库中的表
    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."
    \r\n";
    $message.= $this->get_errno() . "
    \r\n";
    $sql = "INSERT INTO `db_error`(pagename, errstr, timer) VALUES('".$_SERVER["PHP_SELF"]."', '".addslashes($message)."', ".time().")";
    @mysql_unbuffered_query($sql);
    if (DEBUG==true){
    echo "MySQL 数据库错误";
    echo "
    \r\n";
    echo "\r\n";
    echo "
    \r\n";
    echo "\r\n";
    echo "
    \r\n";
    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, 0, -1).") VALUES (".substr($sqlvalue, 0, -1).")";
    }
    function sql_update($tbname, $row, $where){
    foreach ($row as $key=>$value) {
    $sqlud .= $key."= '".$value."',";
    }
    return "UPDATE `".$tbname."` SET ".substr($sqlud, 0, -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, $row, $where){
    $sql = $this->sql_update($tbname, $row, $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, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){
    $sql = $this->sql_select($tbname, $where, $limit, $fields, $orderby, $sort);
    return $this->row_query($sql);
    }
    //详细显示一条记录
    function row_select_one($tbname, $where, $fields="*", $orderby="id"){
    $sql = $this->sql_select($tbname, $where, 1, $fields, $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";
    include('db.php');
    $db = new db();
    $db->connect($db_config);
    //例:查询表 table_name 中 cid=1的所有记录。
    $row = $db->row_select('table_name', 'cid=1');
    ?>

    更详细的使用方法,请参考 db类文件中的注释。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php mysql 数据库 操作类
    上一篇:PHP生成带有雪花背景的验证码_php实例 下一篇:php将数据库中的电话号码读取出来并生成图片_php实例
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP如何使用xlswriter进行大数据的导入导出?(详解)• 自动跳转中英文页面_PHP教程• PHP5的XML新特性_PHP教程• php 面试碰到过的问题 在此做下记录_php技巧• php通用防注入程序 推荐_php技巧
    1/1

    PHP中文网