close

這邊有個php mysql 教學的網站

http://www.php-mysql-tutorial.com/

用php+mysql也是行之有年了...

紀錄一下在php內怎麼使用mysql相關語法

 

一開始剛學php的時候

只是很簡單的使用php內建的mysql_connect指令

 

簡單直覺的方式

<?php
    $dbhost = '127.0.0.1';
    $dbuser = 'mysql_user';
    $dbpass = 'mysql_password';
    $dbname = 'mysql_databaseName';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connection');
    mysql_query("SET NAMES 'utf8'");
    mysql_select_db($dbname);
    $sql = "SELECT COUNT(*) as total FROM `FileList` WHERE `class` = 0;";
    $result = mysql_query($sql) or die('MySQL query error');
    while($row = mysql_fetch_array($result)){
        echo $row['name'];
    }
?>

 

其中以下四個變數是要設定你的mysql相關設定

    $dbhost = '127.0.0.1';
    $dbuser = 'mysql_user';
    $dbpass = 'mysql_password';
    $dbname = 'mysql_databaseName';

 

這邊就是建立連線

    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error with MySQL connection');

 

設定相關的編碼和選擇要使用的資料庫

    mysql_query("SET NAMES 'utf-8'");
    mysql_select_db($dbname);

 

接著就準備開始使用mysql的語法了

    $sql = "SELECT COUNT(*) as total FROM `FileList` WHERE `class` = 0;";
    $result = mysql_query($sql) or die('MySQL query error');
    while($row = mysql_fetch_array($result)){
        echo $row['name'];
    }

 

先用$sql紀錄語法,接著丟到mysql_query($sql)

這函式就會把$sql的語法丟到mysql讓他去執行

然後利用$result = mysql_query($sql)去得到回傳的結果

根據sql語法回傳的資料結構也不一樣

若是最一般的select語法則可以利用while迴圈和mysql_fetch_array去拿到資料

 

以上是最簡單的php mysql語法

但是後來發現如果一個php file裡面要存取多次database或是存取不只一個database

就會非常麻煩

所以我就改用了物件導向的方式

在此感謝NTUCSIE IRLab的健文學長

教導小弟使用php class...受益良多!!

 

物件導向的方式

通常我會寫兩個檔案,一個是DB_config.php,另外一個是DB_class.php

 

DB_config.php就是很簡單的設定database的位址、username、password以及使用的資料表

<?php
    global $_DB;	
    $_DB['host'] = "localhost";
    $_DB['username'] = "username";
    $_DB['password'] = "password";
    $_DB['dbname'] = "db_name";
?>

 

另外再寫一個DB_Class.php檔

<?php

class DB 
{
    var $_dbConn = 0;
    var $_queryResource = 0;
    
    function DB()
    {
        //do nothing
    }
    
    function connect_db($host, $user, $pwd, $dbname)
    {
        $dbConn = mysql_connect($host, $user, $pwd);
        if (! $dbConn)
            die ("MySQL Connect Error");
        mysql_query("SET NAMES utf8");
        if (! mysql_select_db($dbname, $dbConn))
            die ("MySQL Select DB Error");
        $this->_dbConn = $dbConn;
        return true;
    }
    
    function query($sql)
    {
        if (! $queryResource = mysql_query($sql, $this->_dbConn))
            die ("MySQL Query Error");
        $this->_queryResource = $queryResource;
        return $queryResource;        
    }
    
    /** Get array return by MySQL */
    function fetch_array()
    {
        return mysql_fetch_array($this->_queryResource, MYSQL_ASSOC);
    }
    
    function get_num_rows()
    {
        return mysql_num_rows($this->_queryResource);
    }

    /** Get the cuurent id */    
    function get_insert_id()
    {
        return mysql_insert_id($this->_dbConn);
    } 
    
}
?>

 

 

最後在要使用mysql的php file裡面

<?php
    require_once("DB_config.php");
    require_once("DB_class.php");

    $db = new DB();
    $db->connect_db($_DB['host'], $_DB['username'], $_DB['password'], $_DB['dbname']);
    $db->query("SELECT ....");
    while($result = $db->fetch_array())
    {
        // do something you want...
    }
?>
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 austintodo 的頭像
    austintodo

    [todo Austin] 奧斯丁。土豆

    austintodo 發表在 痞客邦 留言(29) 人氣()