PHP中將對資料庫的操作,封裝成一個工具類以及學會使用物件導向的方式進行編程

來源:互聯網
上載者:User

標籤:

<?php        class SqlTool {        //屬性        private $conn;        private $host="localhost";        private $user="root";        private $password="root";        private $db="test";        function SqlTool(){            $this->conn=mysql_connect($this->host,$this->user,$this->password);            if(!$this->conn){                die("串連資料庫失敗".mysql_error());            }            mysql_select_db($this->db,$this->conn);            mysql_query("set names utf8");//設定字元集        }        //方法..        // 完成select dql        public  function execute_dql($sql){                    $res=mysql_query($sql,$this->conn) or die(mysql_error());                        return $res;                    }        //完成 update,delete ,insert dml        public  function execute_dml($sql){                    $b=mysql_query($sql,$this->conn);            //echo "添加的id=".mysql_insert_id($this->conn);            if(!$b){                return 0;//失敗            }else{                if(mysql_affected_rows($this->conn)>0){                    return 1;//表示成功                }else{                    return 2;//表示沒有行數影響.                }            }        }    }?>

2.使用php的 mysqli 擴充庫去操作mysql資料庫

 

簡單介紹:

 

mysqli (mysql improve mysql擴充庫的增強版)

 

mysql 擴充庫 和  mysqli 擴充庫的比較

 

  1. mysqli 的穩定性和安全性,效率有所提高
  2. mysqi 支援物件導向編程 ,同時 mysqli 擴充庫考慮到php老程式員,提供面向過程的編程風格.

 

mysqli 有兩套編程風格:

 

 

 

$mysqli=new MySQLi(“localhost”,”root”,”roo3t”,”test”);//按照物件導向的方式if($mysqli->connect_error){    die($mysqli->connect_error);}// 考慮相容低版本if(mysqli_connect_error()){    die(“串連error”. mysqli_connect_error())}

 

mysqli 編程的快速入門

編寫一個程式,這個程式從user1表中讀取資料,並列印在網頁中。(使用mysqli完成.)

  1. 先使用mysqli物件導向的風格,完成案例 

    1.1. 配置php.ini 檔案讓php支援mysqli擴充庫

    extension=php_mysqli.dll

    1.2 建庫,建表.

    這裡我們使用原來的user1表.

    1.3 編寫代碼

 

 <?php    header("Content-type: text/html;charset=utf-8");    //mysqli操作mysql資料庫(物件導向風格)        //1.建立MySQLi 對象    $mysqli=new MySQLi("localhost","root","root","test");    //驗證是否ok    if($mysqli->connect_error){        die("串連失敗".$mysqli->connect_error);    }    //2. 操作資料庫(發送sql)    $sql="select * from user1";    //$res 是結果集.mysqli result    $res=$mysqli->query($sql);    //var_dump($res);    //3. 處理結果 mysql_fetch_row();    while($row=$res->fetch_row()){        foreach($row as $key=>$val){            echo "--$val";        }        echo "<br/>";    }    //4. 關閉資源    //釋放記憶體    $res->free();    //關閉串連    $mysqli->close();?>

 

3.再使用面向過程的方式給大家示範一下.

 

 

//1.得到mysqli串連    header("Content-type: text/html;charset=utf-8");    $mysqli=mysqli_connect("localhost","root","root","test");    if(!$mysqli){        die("串連失敗".mysqli_connnect_error($mysqli));    }    //2.向資料庫發送sql語句(ddl,dml dql ...)     $sql="select * from user1";    $res=mysqli_query($mysqli,$sql);    //var_dump($res);    //3.處理得到的結果    //迴圈取出$res中的資料mysqli_fetch_row mysql_fetch_row    while($row=mysqli_fetch_row($res)){                foreach($row as $key=>$val){            echo "--$val";        }        echo "<br/>";    }    //4.關閉資源    mysqli_free_result($res);    mysqli_close($mysqli);

 

? 在mysqli 擴充中,也提供了四種方式來擷取mysqli result結果集

mysqli_result::fetch_assoc    <==>    mysql_fetch_assoc

mysqli_result::fetch_row  <==>    mysql_fetch_row

mysqli_result::fetch_array <===> mysql_fetch_array

mysqli_result::fetch_object<===> mysql_fetch_object

這裡我們推薦大家使用前兩種效率較高 

? 在mysqli釋放結果集有三種方式:

void mysqli_result::free ( void )

void mysqli_result::close ( void )

void mysqli_result::free_result ( void )

? mysql 的 sql  語句的特別說明:

如果操作的欄位類型是 string 型,則要求我們的 要用 ‘’ 包括。

如果操作的欄位類型是 數值型,則可以用 ’80’ 包括,也可以不用

u mysqli的增強-批量執行sql語句

 

批量執行 dml語句

基本文法

$sqls=”sql1;sql2;...”
mysqli::multi_query($sqls)

//請使用mysqli的mysqi::multi_query() 一次性添加三個使用者 宋江 盧俊義 吳用

 

$sqls="insert into user1 (name,password,email,age) values(‘宋江‘,‘aaa‘,‘[email protected]‘,45);";$sqls.="insert into user1 (name,password,email,age) values(‘盧俊義‘,‘aaa‘,‘[email protected]‘,45);";$sqls.="insert into user1 (name,password,email,age) values(‘吳用‘,‘aaa‘,‘[email protected]‘,45);";//$sqls.="update ;";//$sqls.="delete ;";//dml 和 dql$b=$mysqli->multi_query($sqls);

 

? 批量執行dml語句可以混合使用 delete insert update,但是最好不要使用select

 

PHP中將對資料庫的操作,封裝成一個工具類以及學會使用物件導向的方式進行編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.