PHP之封裝MySQL類

config.inc.php內(nèi)容如下

<?php
return array(
    'DB_HOST' => '192.168.188.134',
    'DB_NAME' => 'scoreboard', 
    'DB_USER' => 'score',
    'DB_PASS' => '123456',
    'DB_CHARSET' => 'utf8',
    'IS_LOG' => 1,//開(kāi)啟日志
    'LOGFILEPATH' => '../log.txt'//日志路徑
);
/*
    $database = require('./config.php');
    echo $database['DB_TYPE'];   //輸出'DB_TYPE'
*/

?>

表設(shè)計(jì)如下

create database scoreboard;
use scoreboard;

create table users(
id int not null auto_increment primary key,
gid int not null,                --組id
username varchar(20) not null,
password varchar(32) not null,
sex varchar(2) not null,
totalscore int  --個(gè)人總積分
);

create table share(
id int not null auto_increment primary key,
uid int not null,
content varchar(1024) not null,  --分享內(nèi)容
comment varchar(1024) not null,   --點(diǎn)評(píng)
date varchar(15) not null       --分享日期
);

create table score(
id int not null auto_increment primary key,
uid int not null,               --用戶id
score int not null,             --用戶單次積分
);

grant all privileges on scoreboard.* to 'score'@'%' identified by '123456';
flush privileges;

封裝類如下

<?php

class mysql {
    private $logfilepath;
    private $is_log;
    private $hlog;
    private $conn;

    //構(gòu)造函數(shù)
    public function __construct()
    {
        $config = include_once(dirname(__FILE__)."/../config/config.inc.php");
        $this->is_log = $config['IS_LOG'];
        $this->logfilepath = $config['LOGFILEPATH'];

        if ($this->is_log){
            $handle = fopen($this->logfilepath,"a+");
            $this->hlog = $handle;
        }

        $this->conn = $this->connect($config['DB_HOST'],$config['DB_USER'],$config['DB_PASS'],$config['DB_NAME'],$config['DB_CHARSET']);
    }

    //連接數(shù)據(jù)庫(kù)
    public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbcharset)
    {
        $this->conn = @mysql_connect($dbhost,$dbuser,$dbpass);
        if (!$this->conn) {
            $msg = "連接數(shù)據(jù)庫(kù)失斈脸椤:".mysql_error();
            $this->write_log($msg);
            die($msg);
        } else {
            if (!@mysql_select_db($dbname)) {
                $msg = "連接數(shù)據(jù)庫(kù)成功,但選擇數(shù)據(jù)庫(kù)失斀馑铩:".mysql_error();
                $this->write_log($msg);
                die($msg);
            } else {
                $msg = "連接數(shù)據(jù)庫(kù)成功律罢,且選擇數(shù)據(jù)庫(kù)成功";
                $this->write_log($msg);
            }
        }

        @mysql_query("set names ".$dbcharset);

    }

    //執(zhí)行語(yǔ)句
    public function query($sql){
        
        $result = @mysql_query($sql);

        if (!$result) {
            $this->write_log('mysql_query error:'.mysql_error());
        } else {
            $this->write_log('執(zhí)行語(yǔ)句:'.$sql.' 且執(zhí)行成功');
        }
        return $result;
    }

    //查詢一條數(shù)據(jù)
    public function select_one($tab,$column = "*",$condition = '',$debug=False)   //查詢函數(shù)
    {
        $condition = $condition ? ' where ' . $condition : NULL;
        $sql = "select $column from $tab $condition ";
        if ($debug) {
            echo '將執(zhí)行語(yǔ)句:'.$sql.'<br />';
        } else {
            $result = $this->query($sql);
            $row = @mysql_fetch_assoc($result);
            return $row;
        }
    }

    //查詢多條數(shù)據(jù)
    public function select_more($tab,$column = "*",$condition = '',$debug=False)   //查詢函數(shù)
    {
        $condition = $condition ? ' where ' . $condition : NULL;
        $sql = "select $column from $tab $condition";
        if ($debug) {
            echo '將執(zhí)行語(yǔ)句:'.$sql;
        } else {
            $result = $this->query($sql);
            $i = 0;
            $rows = array();
            while ($row = @mysql_fetch_assoc($result)) {
                $rows[$i] = $row;
                // print_r($rows[$i]);
                $i++; 
            }
            return $rows;
        }
    }

    //返回結(jié)果集
    public function echo_result($tab,$column = "*",$condition = '',$debug=False)   //查詢函數(shù)
    {
        $condition = $condition ? ' where ' . $condition : NULL;
        $sql = "select $column from $tab $condition ";
        if ($debug) {
            echo '將執(zhí)行語(yǔ)句:'.$sql.'<br />';
        } else {
            return $this->query($sql);
        }
    }

    //插入數(shù)據(jù)
    public function insert($tab,$arr,$debug=False)
    {
        $value = '';
        $column = '';
        foreach ($arr as $k => $v) {
            $column .= ",{$k}";
            $value .= ",'{$v}'";
        }
        $column = substr($column, 1);
        $value = substr($value, 1);

        $sql = "insert into $tab($column) values($value)";
        if ($debug) {
            echo '將執(zhí)行語(yǔ)句:'.$sql;
        } else {
            $this->query($sql);
            $num = $this->affected_num();
            $this->write_log("受影響行數(shù):".$num);
            return $num;    //返回受影響行數(shù)
        }
    }

    //獲取最后插入的id
    public function insert_id() {
        $id = mysql_insert_id($this->link_id);
        $this->write_log('最后插入的id為:'.$id);
        return $id;
    }

    //更新數(shù)據(jù)
    public function update($tab,$arr,$condition = '',$debug=False)
    {
        if (!$condition) {
            die("error".mysql_error());
        } else {
            $condition = 'where ' . $condition;
        }
        
        $value = '';
        foreach ($arr as $k => $v) {
            $value .= "{$k}='{$v}',";
        }
        $value = substr($value,0,-1);

        $sql = "update $tab set $value $condition";
        if ($debug) {
            echo '將執(zhí)行語(yǔ)句:'.$sql;
        } else {
            $this->query($sql);
            $num = $this->affected_num();
            $this->write_log("受影響行數(shù):".$num);

            return $num;            
        }
    }

    //刪除數(shù)據(jù)
    public function delete($tab,$condition='',$debug=False)
    {
        $condition = $condition ? ' where ' . $condition : NULL;
        $sql = "delete from $tab $condition";
        if ($debug) {
            echo '將執(zhí)行語(yǔ)句:'.$sql;
        } else {
            $this->query($sql);
            $num = $this->affected_num();
            $this->write_log("受影響行數(shù):".$num);
            return $num;    //返回受影響行數(shù)
        }
    }

    //返回受影響行數(shù)
    public function affected_num()
    {
        $num = @mysql_affected_rows();
        return $num;
    }

    //寫入日志
    public function write_log($msg='')
    {
        if ($this->is_log){
            $text = date("Y-m-d H:i:s")." ".$msg."\r\n";
            fwrite($this->hlog,$text);
        }
    }

    //關(guān)閉數(shù)據(jù)庫(kù)連接
    public function close()
    {  
        mysql_close($this->conn);
    }

    //析構(gòu)函數(shù)
    public function __destruct()
    {
        if($this->is_log){
            fclose($this->hlog);
        }
    }
}


    //$db = new mysql();
    
    // //select_one($tab,$column = "*",$condition = '')
    // $rows = $db->select_more('share','*');
    // print_r($rows[0]);
    // print_r($rows[1]);


    // //insert($tab,$arr)
    // $arr = array();
    // $arr['uid'] = '3';
    // $arr['content'] = 'xss';
    // $arr['comment'] = 'very good';
    // $arr['date'] = '1464082630';
    // $db->insert('share',$arr);


    // //update($tab,$arr,$condition = '')
    // $arr = array();
    // $arr['content'] = 'xssxssxssxssxss';
    // $arr['comment'] = 'goodgoodgoodgood';
    // $condition = 'id > 5';
    // $db->update('share',$arr,$condition);


    //$db->delete("share","id between 10 and 15");


    //$db->close();

?>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛆橡,一起剝皮案震驚了整個(gè)濱河市角撞,隨后出現(xiàn)的幾起案子贮乳,更是在濱河造成了極大的恐慌霜幼,老刑警劉巖屠升,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潮改,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡腹暖,警方通過(guò)查閱死者的電腦和手機(jī)汇在,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)微服,“玉大人趾疚,你說(shuō)我怎么就攤上這事缨历。” “怎么了糙麦?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵辛孵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赡磅,道長(zhǎng)魄缚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任焚廊,我火速辦了婚禮冶匹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咆瘟。我一直安慰自己嚼隘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布袒餐。 她就那樣靜靜地躺著飞蛹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪灸眼。 梳的紋絲不亂的頭發(fā)上卧檐,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音焰宣,去河邊找鬼霉囚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛匕积,可吹牛的內(nèi)容都是我干的盈罐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼闪唆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼暖呕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起苞氮,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓤逼,沒(méi)想到半個(gè)月后笼吟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡霸旗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年贷帮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诱告。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撵枢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锄禽,我是刑警寧澤潜必,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站沃但,受9級(jí)特大地震影響磁滚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宵晚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一垂攘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧淤刃,春花似錦晒他、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至耕陷,卻和暖如春掂名,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哟沫。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工饺蔑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗜诀。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓猾警,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親隆敢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子发皿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,787評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)拂蝎,斷路器穴墅,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法温自,內(nèi)部類的語(yǔ)法玄货,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法悼泌,線程的語(yǔ)...
    子非魚_t_閱讀 31,598評(píng)論 18 399
  • 依著一縷靜謐的光陰松捉,攜一縷暖陽(yáng),伴著清風(fēng)云淡馆里,看一朵素潔小花的明媚淡雅隘世,賞一葉綠草的枝頭嶄綠可柿,做一個(gè)剛剛好的女子,...
    林芳晨閱讀 131評(píng)論 1 0
  • 小蝸突然發(fā)現(xiàn)自己老了,畢竟已經(jīng)是90后空巢老人了蔓钟。 想起十年前的網(wǎng)絡(luò)社交跟現(xiàn)在的對(duì)比永票,相差得不是一點(diǎn)兩點(diǎn)。 十年前...
    WIN分享計(jì)劃閱讀 449評(píng)論 0 1