萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> PHP學習筆記之連接mysql數據庫

PHP學習筆記之連接mysql數據庫

接觸PHP已經有一段時間了,今天寫一篇關於PHP連接MYSQL數據庫的文章,也算是自己對學習PHP與數據庫的一點總結。


果文章出現錯誤,希望各位包涵、指出。

言歸正傳,對於PHP來講,它是默認支持MYSQL的,也就是說我們不必再去手動設置ODBC來使用MYSQL了,我們所需要做的設置就是在php.ini中引入MYSQL插件。首先找到你的php.ini,編輯它,將extension = php_mysql.dll前的分號(“;”)去掉即可。這樣,我們的php就可以使用MYSQL了。

 接下來我們連接mysql,mysql_connect(servername:port,username,password)就是用於連接mysql的函數,其中servername:port參數就是數據庫地址以及數據庫端口(默認情況下port參數為3306);username即是登陸數據庫所使用的用戶名,password則是對應用戶的密碼。由於我的數據庫就在本機上所以連接時我使用以下語句。

 
連接代碼

$con = mysql_connect("localhost","root","");  //$con可理解為連接號

當然我們不能讓mysql一直處於連接狀態,對於小型應用來說或許這不算問題,但對於大型web應用來講這是很浪費資源的,所以用完數據庫連接之後我們要關掉它。這個任務我們交給mysql_close(連接號)來完成。


開啟和關閉數據庫連接

 代碼如下 復制代碼 $con = mysql_connect("loaclhost","root","");  
$con = mysql_close($con);  

 
 
弄明白了如何連接和斷開數據庫,接下來就是在mysql中創建數據庫,這聽起來很拗口,因為同一台mysql服務器中可以允許多個數據庫的存在。這裡我們有兩種方法來建立數據庫,法一使用mysql_create_db()函數,但不建議大家使用這種方法。

 
創建數據庫

 代碼如下 復制代碼

$con = mysql_connect("localhost","root","");  
mysql_create_db("guestbook",$con);  
mysql_close($con);  

法二,我們直接采用mysql_query()函數來執行sql語句。Create DATABASE 就是用於創建數據庫的sql語句,例如Create DATABASE test,就是創建一個名為test的數據庫。
 

創建數據庫

 代碼如下 復制代碼

$con = mysql_connect("localhost","root","");    
mysql_query("Create DATABASE guestbook",$con);    
mysql_close($con);   

 

 建完數據庫,我們要向數據庫中添加數據表。同樣是采用mysql_query()函數來執行sql語句,但不同的是之前我們要使用mysql_select_db()函數來選擇我們操作的數據庫。

 代碼如下 復制代碼
$con = mysql_connect("localhost","root","");      
mysql_query("Create DATABASE guestbook",$con);  
mysql_select_db("guestbook",$con);  
mysql_query("Create TABLE users(username varchar(15), 
password varchar(15))");      
mysql_close($con);  
/*  建表語句: Create TABLE 表明(字段名_1 字段數據類型_1,字段名_2 字段數據類型_2,......,字段名_n 字段數據類型_n)      */ 

 


在數據庫中建立好表、字段等數據數據關系之後,就差實實在在的數據了。同上,使用mysql_query()函數執行添加數據的sql語句,Insert INTO 表名 (字段名_1,字段名_2,......,字段名_n) VALUES (數據_1,數據_2,......,數據_n)。

 代碼如下 復制代碼

 
$con = mysql_connect("localhost","root","");        
mysql_query("Create DATABASE guestbook",$con);    
mysql_select_db("guestbook",$con);    
mysql_query("Create TABLE users(username varchar(15),  
password varchar(15))");    
mysql_query("Insert INTO users (username,password) VALUES ('Ku_Andrew','123456')");      
mysql_close($con);   

現在,我們的數據庫中已經有了數據,接下來我們使用select語句來進去查詢。

 代碼如下 復制代碼 $con = mysql_connect("localhost","root","");        
mysql_query("Create DATABASE guestbook",$con);    
mysql_select_db("guestbook",$con);    
mysql_query("Create TABLE users(username varchar(15),  
password varchar(15))");   
$select = mysql_query("select * from users");  
while ($row = mysql_fetch_array($select);)  
{  
    echo $row['username'];  
    echo $row['password'];  
}  
mysql_close($con); 

  

這樣,通過while循環我們就可以把users表中所有的數據全部查詢出來,上面這樣做不好重復利了,下面我們可以做成數據庫連接類。

 代碼如下 復制代碼

<?php
//------------------------------------------------------------------------------------------
// ※Database()                   構造函數,數據庫初始參數
// ※Select()                     查詢
// ※GetRows()                    返回查詢的記錄總數
// ※Insert()                     插入記錄
// ※Update()                     更新
// ※Delete()                     刪除
// ※Halt()                       中斷並顯示錯誤信息 111Cn.Net */
//------------------------------------------------------------------------------------------
define("DATABASETYPE", "1");       //定義數據庫類型:1為MySql;2為SQL Server;3為Oracle;4為Odbc
define("SERVER", "localhost");     //Host name or IP address of the database server
define("DATABASE", "dbName");   //要連接的數據庫名
define("USER", "tableName");     //用於連接數據庫的用戶名
define("PASSWORD", "paswd");    //用於連接數據庫的密碼 

class Database {
    var $dbLink;                      //連接句柄
    var $result;                      //查詢句柄
    var $insId;                       //Insert()成功返回AUTO_INCREMENT列的值
    var $rows;                        //返回數據數組
    var $numRows;                     //返回數據數目
    var $dbHost, $dbUser, $userPassword, $database;
    var $dbType = DATABASETYPE;
    var $msgFlag = "yes";            //yes:show the Mysql message ; no: die by show "Halted."

    function Database($dbHost = SERVER, $dbUser = USER, $userPassword = PASSWORD, $database = DATABASE) {
        switch ($this->dbType) {
            case 1:
                $this->dbLink = @mysql_pconnect($dbHost, $dbUser, $userPassword); // or die("Can't Connect to Remote Host!");
                @mysql_select_db($database, $this->dbLink); // or die ("Can't Connect to Remote Host!");
                break;
            case 2:
                break;
        }
        return true;
    }

    /* SQL:Select() 返回為false無結果 */

    function Select($table, $columns, $condition = 1) {
        $sql = "select $columns from $table where $condition ";
        $this->result = @mysql_query($sql, $this->dbLink);
        unset($this->rows);
        if ($this->result) {
            $i = 0;
            if (!($this->rows = array("$i" => @mysql_fetch_array($this->result))))
                return false;
            if (($this->numRows = @mysql_num_rows($this->result)) == 0)
                return false;
            while ($tempRows = @mysql_fetch_array($this->result)) {
                array_push($this->rows, $tempRows);
            }
        } else {
            $this->Halt($sql);
            return false;
        }
        return true;
    }

    /* SQL:GetRows() 返回查詢的記錄總數 */

    function GetRows($table, $condition = 1) {
        $sql = "select count(1) as count from $table where $condition";
        $this->result = @mysql_query($sql, $this->dbLink);
        if ($this->result) {
            $temp = @mysql_fetch_array($this->result);
            $this->numRows = $temp[count];
        } else {
            $this->Halt($sql);
            return false;
        }
        return $this->numRows;
    }

    /* SQL:Insert() */

    function Insert($table, $columns, $values) {
        $sql = "insert into $table ($columns) values ($values)";
        $this->result = @mysql_query($sql, $this->dbLink);
        if ($this->result)
            $this->insId = @mysql_insert_id($this->dbLink);
        else {
            $this->Halt($sql);
            return false;
        }
        return true;
    }

    /* SQL:Update() */

    function Update($table, $setings, $condition) {
        $sql = "update $table set $setings where $condition";
        $this->result = @mysql_query($sql, $this->dbLink);
        if ($this->result)
            $this->numRows = @mysql_affected_rows($this->result);
        else {
            $this->Halt($sql);
            return false;
        }
        return true;
    }

    /* SQL:Delete */

    function Delete($table, $condition) {
        $sql = "delete from $table where $condition";
        $this->result = @mysql_query($sql, $this->dbLink);
        if ($this->result)
            $this->numRows = @mysql_affected_rows($this->result);
        else {
            $this->Halt($sql);
            return false;
        }
        return true;
    }

    /* Halt():error message */

    function Halt($msg) {
        if ($this->msgFlag == "yes") {
            printf("<b>Database Query Error:</b> %s<br>n", $msg);
            printf("<b>MySql Error:</b> %s<br>n", mysql_error());
        }else
            echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=../include/error.htm'>"; //自定一個出錯提示文件
        return false;
    }
}

switch ($db->dbType) {
    case 1:
        @mysql_close();
        break;
    case 2:
        break;
}
$db = new Database();
?>

copyright © 萬盛學電腦網 all rights reserved