標籤:
<?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 擴充庫的比較
- mysqli 的穩定性和安全性,效率有所提高
- 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完成.)
- 先使用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中將對資料庫的操作,封裝成一個工具類以及學會使用物件導向的方式進行編程