封裝一個(gè)MySQL工具類

MySQL工具類

功能:

  1. 單例創(chuàng)建工具類對(duì)象实辑,并連接MySQL
  2. 對(duì)mysql_query做封裝褥民,錯(cuò)誤時(shí)打印錯(cuò)誤SQL語(yǔ)句、出錯(cuò)信息谒所、出錯(cuò)碼
  3. 查詢方法1:返回查詢的全部結(jié)果热康,并作為數(shù)組返回
  4. 查詢方法2:返回第一行數(shù)據(jù),并作為數(shù)據(jù)返回
  5. 查詢方法3:返回第一行的第一列數(shù)據(jù)劣领,并作為數(shù)據(jù)返回
<?php
//定義連接數(shù)據(jù)庫(kù)的類姐军,并返回鏈接后的資源
//實(shí)現(xiàn)單例模式
//執(zhí)行普通增刪改非返回結(jié)果集語(yǔ)句
//執(zhí)行select語(yǔ)句并可以返回3種類型的數(shù)據(jù)
//單行結(jié)果(一維數(shù)組),多行結(jié)果(二維數(shù)組)
//單行單例(單個(gè)數(shù)據(jù))
class mysqlDB{
    public $host;
    public $port;
    public $username;
    public $password;
    public $charset;
    public $dbname;

    //連接結(jié)果
    private static $link;

    private $resource;

    //單例方法
    public static function getInstance($config){
        if(!isset(self::$link)){
            self::$link = new self($config);
        }
        return self::$link;
    }

    //禁止new
    private function __construct($config){
        $this->host = isset($config['host'])?$config['host']:'localhost';
        $this->port = isset($config['port'])?$config['port']:'8889';
        $this->username = isset($config['username'])?$config['username']:'root';
        $this->password = isset($config['password'])?$config['password']:'root';
        $this->charset = isset($config['charset'])?$config['charset']:'utf8';
        $this->dbname = isset($config['dbname'])?$config['dbname']:'';

        $this->connect();
        //設(shè)定連接編碼
        $this->setCharset($this->charset);
        //設(shè)定數(shù)據(jù)庫(kù)
        $this->selectDb($this->dbname);
    }
    //禁止clone
    private function __clone(){}

    public function connect(){
        $this->resource = mysql_connect("$this->host:$this->port","$this->username","$this->password") or die("連接數(shù)據(jù)庫(kù)失敗");
    }
    public function setCharset($charset){
        $this->query("set name $charset");

    }
    public function selectDb($dbname){
        $this->query("use $dbname") or die('選擇數(shù)據(jù)庫(kù)失敗');
    }
    /**
     * 執(zhí)行最基本sql語(yǔ)句
     * @param  返回錯(cuò)誤代碼
     * @return 返回執(zhí)行結(jié)果
     */
    public function query($sql){
        //執(zhí)行失敗
        if(!$result = mysql_query($sql,$this->resource)){
            echo "<br/>sql語(yǔ)句:".$sql;
            echo "<br/出錯(cuò)信息>:".mysql_error();
            echo "<br/出錯(cuò)代碼>:".mysql_errno();
            die();
        }
        return $result;
    }
    /**
     * 功能執(zhí)行select語(yǔ)句尖淘,返回2維數(shù)組
     * 參數(shù):$sql 字符串類型 select語(yǔ)句
     */
    public function getAll($sql){
        $result = $this -> query($sql);
        $arr = array();
        while($rec = mysql_fetch_assoc($result)){
            $arr[] = $rec;
        }
        return $arr;
    }
    /**
     * 功能:返回一行數(shù)據(jù)作為一維數(shù)組
     * 參數(shù):$sql 字符串類型 select語(yǔ)句
     */
    public function getRow($sql){
        $result = $this -> query($sql);
        if($rec2 = mysql_fetch_assoc($result)){
            //如果fetch出來(lái)有數(shù)據(jù)奕锌,返回一維數(shù)組
            return $rec2;
        }
        return false;
    }

    /**
     * 功能:返回select的第一行第一列
     * 參數(shù):$sql 字符串類型 select語(yǔ)句
     */
    public function getOne($sql){
        $result = $this -> query($sql);
        $rec = mysql_fetch_row($result);//返回下標(biāo)為數(shù)字的數(shù)組
        if($rec == false){
            return false;
        }
        return $rec[0];
    }
}
?>

昨天球隊(duì)信息例子來(lái)展示如何使用。昨天內(nèi)容戳這里

<?
    require './SQLDB.class.php';
    # 比賽列表
    header('Content-Type: text/html;charset=utf-8');

    //通過數(shù)據(jù)操作村生,將比賽列表需要的數(shù)據(jù)處理
    //初始化MySQLDB

    $config = array(
        'host'=>'localhost',
        'port'=>'8889',
        'username'=>'root',
        'password'=>'root',
        'charset'=>'utf8',
        'dbname'=>'php'
    );
    $dao = MySQLDB::getInstance($config);//$dao,Database Access Object 數(shù)據(jù)庫(kù)操作對(duì)象(道層)

    //獲得比賽里表數(shù)據(jù)
    $sql = "select t1.t_name as t1_name, m.t1_score, m.t2_score, t2.t_name as t2_name, m.m_time from `match` as m 
        left join `team` as t1 ON
        m.t1_id = t1.t_id  
        left join `team` as t2 ON 
        m.t2_id=t2.t_id;";
    $match_list=$dao->getAll($sql);
?>
<!-- 利用html展示數(shù)據(jù) -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>比賽列表</title>
</head>
<body>
    <table>
        <tr>
            <th>球隊(duì)一</th><th>比分</th><th>球隊(duì)二</th><th>比賽時(shí)間</th>
        </tr>
            <?php foreach ($match_list as $row) :?>
            <tr>
                <td><?php echo $row['t1_name'];?></td>
                <td><?php echo $row['t1_score'];?>:<?php echo $row['t2_score'];?></td>
                <td><?php echo $row['t2_name'];?></td>
                <td><?php echo date('Y-m-d H:i',$row['m_time']);?></td>
            </tr>
            <?php endForeach ?>
    </table>
</body>
</html>
執(zhí)行結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惊暴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子趁桃,更是在濱河造成了極大的恐慌辽话,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卫病,死亡現(xiàn)場(chǎng)離奇詭異油啤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蟀苛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門益咬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人帜平,你說(shuō)我怎么就攤上這事幽告。” “怎么了裆甩?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵冗锁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我淑掌,道長(zhǎng)蒿讥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任抛腕,我火速辦了婚禮,結(jié)果婚禮上媒殉,老公的妹妹穿的比我還像新娘担敌。我一直安慰自己,他們只是感情好廷蓉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布全封。 她就那樣靜靜地躺著马昙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刹悴。 梳的紋絲不亂的頭發(fā)上行楞,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音土匀,去河邊找鬼子房。 笑死,一個(gè)胖子當(dāng)著我的面吹牛就轧,可吹牛的內(nèi)容都是我干的证杭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼妒御,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼解愤!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起乎莉,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤送讲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后惋啃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哼鬓,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年肥橙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了魄宏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡存筏,死狀恐怖宠互,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情椭坚,我是刑警寧澤予跌,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站善茎,受9級(jí)特大地震影響券册,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜垂涯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一烁焙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耕赘,春花似錦骄蝇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赚窃。三九已至,卻和暖如春岔激,著一層夾襖步出監(jiān)牢的瞬間勒极,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工虑鼎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辱匿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓震叙,卻偏偏與公主長(zhǎng)得像掀鹅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子媒楼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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