亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

PHP擴展小試牛刀系列之數據庫擴展mysqli詳細使用教程

瀏覽:2日期:2022-09-13 10:10:09

PHP擴展小試牛刀系列之數據庫擴展mysqli詳細使用教程

mysqli提供了面向對象和面向過程兩種方式來與數據庫交互,分別看一下這兩種方式。

1、面向對象

在面向對象的方式中,mysqli被封裝成一個類,它的構造方法如下:

__construct ([ string $host [, string $username [, string $passwd [, string $dbname[, int $port [, string $socket ]]]]]] )

在上述語法中涉及到的參數說明如下。

host:連接的服務器地址。username:連接數據庫的用戶名,默認值是服務器進程所有者的用戶名。passwd:連接數據庫的密碼,默認值為空。dbname:連接的數據庫名稱。port:TCP端口號。socket:UNIX域socket。

要建立與MySQL的連接可以通過其構造方法實例化mysqli類,例如下面的代碼:

<?php $db_host='localhost'; //連接的服務器地址 $db_user='root'; //連接數據庫的用戶名 $db_psw='root'; //連接數據庫的密碼 $db_name='sunyang'; //連接的數據庫名稱 $mysqli=new mysqli($db_host,$db_user,$db_psw,$db_name);?>

mysqli還提供了一個連接MySQL的成員方法connect()。當實例化構造方法為空的mysqli類時,用mysqli對象調用connect()方法同樣可連接MySQL,例如,下面的代碼:

<?php $db_host='localhost'; //連接的服務器地址 $db_user='root'; //連接數據庫的用戶名 $db_psw='root'; //連接數據庫的密碼 $db_name='sunyang'; //連接的數據庫名稱 $mysqli=new mysqli(); $mysqli->connect($db_host,$db_user,$db_psw,$db_name);?>

關閉與MySQL服務器的連接通過mysqli對象調用close()方法即可,例如:

$mysqli->close();2、面向過程

在面向過程的方式中,mysqli擴展提供了函數mysqli_connect()與MySQL建立連接,該函數的語法格式如下:

mysqli mysqli_connect ([ string $host [, string $username [, string $passwd[, string $dbname [, int $port [, string $socket ]]]]]] )

mysqli_connect()函數的用法與mysql擴展中的mysql_connect()函數用法十分相似,下面是mysqli_connect()函數的用法示例:

<?php $connection = mysqli_connect('localhost','root','root','sunyang'); if ( $connection ) {echo '數據庫連接成功'; }else {echo '數據庫連接失敗'; }?>

關閉與MySQL服務器的連接使用mysqli_close()函數,例如:

mysqli_close();3、使用mysqli存取數據

使用mysqli存取數據也包括面向對象和面向過程兩種方式,在本節我們只討論如何使用面向對象的方式來與MySQL交互,關于mysqli擴展中使用面向過程方式這里就不再詳細介紹了,有興趣的讀者可參考官方文檔來獲取相關的資料。

在mysqli中,執行查詢使用query()方法,該方法的語法格式如下:

mixed query ( string $query [, int $resultmode ] )

在上述語法中涉及到的參數說明如下:

query:向服務器發送的SQL語句。resultmode:該參數接受兩個值,一個是MYSQLI_STORE_RESULT,表示結果作為緩沖集合返回;另一個是MYSQLI_USE_RESULT,表示結果作為非緩沖集合返回。

下面是使用query()方法執行查詢的例子:

<?php $mysqli=new mysqli('localhost','root','root','sunyang'); //實例化mysqli $query='select * from employee'; $result=$mysqli->query($query); if ($result) {if($result->num_rows>0){ //判斷結果集中行的數目是否大于0 while($row =$result->fetch_array() ){ //循環輸出結果集中的記錄echo ($row[0]).'<br>';echo ($row[1]).'<br>';echo ($row[2]).'<br>';echo ($row[3]).'<br>';echo '<hr>'; }} }else {echo '查詢失敗'; } $result->free(); $mysqli->close();?>

在上面代碼中,num_rows為結果集的一個屬性,返回結果集中行的數目。方法fetch_array()將結果集中的記錄放入一個數組中并將其返回。最后使用free()方法將結果集中的內存釋放,使用close()方法將數據庫連接關閉。

對于刪除記錄(delete)、保存記錄(insert)和修改記錄(update)的操作,也是使用query()方法來執行的,下面是刪除記錄的例子:

<?php $mysqli=new mysqli('localhost','root','root','sunyang'); //實例化mysqli $query='delete from employee where emp_id=2'; $result=$mysqli->query($query); if ($result){echo '刪除操作執行成功'; }else {echo '刪除操作執行失敗'; } $mysqli->close();?>

保存記錄(insert)、修改記錄(update)的操作與刪除記錄(delete)的操作類似,將SQL語句進行相應的修改即可。

4、預處理語句

使用預處理語句可提高重復使用語句的性能,在PHP中,使用prepare()方法來進行預處理語句查詢,使用execute()方法來執行預準備語句。PHP有兩種預處理語句:一種是綁定結果,另一種是綁定參數。

(1)綁定結果

所謂綁定結果就是把PHP腳本中的自定義變量綁定到結果集中的相應字段上,這些變量就代表著所查詢的記錄,綁定結果的示例代碼如下:

<?php $mysqli=new mysqli('localhost','root','root','sunyang'); //實例化mysqli $query='select * from employee'; $result=$mysqli->prepare($query); //進行預準備語句查詢 $result->execute(); //執行預準備語句 $result->bind_result($id,$number,$name,$age); //綁定結果 while ($result->fetch()) {echo $id;echo $number;echo $name;echo $age; } $result->close(); //關閉預準備語句 $mysqli->close(); //關閉連接?>

在綁定結果的時候,腳本中的變量要與結果集中的字段一一對應,綁定完以后,通過fetch()方法將綁定在結果集中的變量一一取出來,最后將預處理和數據庫連接分別關閉。

(2)綁定參數

所謂綁定參數就是把PHP腳本中的自定義變量綁定到SQL語句中的參數(參數使用 “?”代替)上,綁定參數使用bind_param()方法,該方法的語法格式如下:

bool bind_param ( string $types , mixed &$var1 [, mixed &$... ] )

在上述語法中涉及到的參數說明如下。

types:綁定的變量的數據類型,它接受的字符種類包括4個,如下表所示(參數types接受的字符的種類和綁定的變量需要一一對應)。字符種類代表的數據類型IintegerDdoubleSstringBblobvar1:綁定的變量,其數量必須要與SQL語句中的參數數量保持一致。

綁定參數的示例代碼如下:

<?php $mysqli=new mysqli('localhost','root','root','sunyang'); //實例化mysqli $query='insert into employee (emp_number,emp_name,emp_age) values (?,?,?)'; $result=$mysqli->prepare($query); $result->bind_param('ssi',$number,$name,$age); //綁定參數 $number=’sy0807’; $name=’employee7’; $age=20; $result->execute(); //執行預準備語句 $result->close(); $mysqli->close();?>

在一個腳本中還可以同時綁定參數和綁定結果,示例代碼如下:

<?php $mysqli=new mysqli('localhost','root','root','sunyang'); //實例化mysqli $query='select * from employee where emp_id < ?'; $result=$mysqli->prepare($query); $result->bind_param('i',$emp_id); //綁定參數 $emp_id=4; $result->execute(); $result->bind_result($id,$number,$name,$age); //綁定結果 while ($result->fetch()) {echo $id.'<br>';echo $number.'<br>';echo $name.'<br>';echo $age.'<br>'; } $result->close(); $mysqli->close();?>5、多個查詢

mysqli擴展提供了能連續執行多個查詢的multi_query()方法,該方法的語法格式如下:

bool mysqli_multi_query ( mysqli $link , string $query )

在執行多個查詢時,除了最后一個查詢語句,每個查詢語句之間要用“;”分開。執行多個查詢的示例代碼如下:

$mysqli=new mysqli('localhost','root','root','sunyang'); //實例化mysqli $query = 'select emp_name from employee ;'; $query .= 'select dep_name from depment '; if ($mysqli->multi_query($query)) { //執行多個查詢do { if ($result = $mysqli->store_result()) {while ($row = $result->fetch_row()) { echo $row[0]; echo '<br>';}$result->close(); } if ($mysqli->more_results()) {echo ('-----------------<br>'); //連個查詢之間的分割線 }} while ($mysqli->next_result()); } $mysqli->close();//關閉連接?>

在上述代碼中,store_result()方法用于獲得一個緩沖結果集; fetch_row()方法的作用類似于fetch_array()方法;more_results()方法用于從一個多查詢中檢查是否還有更多的查詢結果;next_result()方法用于從一個多查詢中準備下一個查詢結果。

6、事務操作

首先只有數據庫中表的類型為InnoDB時,才支持事務提交,建議使用InnoDB,更建議使用mysqli擴展庫了,不僅因為mysqli支持多條sql查詢,更是因為它的速度、性能、安全更可靠,而且完全面向對象,當然也可以是面向過程操作。

看下面mysqli對事務操作的php代碼:

<?php header('Content:text/html;charset=utf-8'); /*mysqli面向過程操作www.phpddt.com*/ $mysqli = new mysqli(’localhost’,’root’,’’,’test’); $mysqli->query('set names utf8'); if ($mysqli->connect_error){die('連接錯誤:'.$mysqli->connect_error); } //將事務提交設為false $mysqli->autocommit(false); $sql = 'insert into `user` values(null,’小紅’,md5(123),’321321’)'; $sql2 = 'insert into `user` values(null,’小王’,md5(321),’dasf’)'; //執行操作,返回的是bool值 $query = $mysqli->query($sql); $query2 = $mysqli->query($sql2); if ($query && $query2){$mysqli->commit();echo '操作成功'; }else{echo '操作失敗'.$mysqli->error;$mysqli->rollback(); } $mysqli->autocommit(true); $mysqli->close();?>

標簽: PHP
相關文章:
主站蜘蛛池模板: 国产dvd毛片在线视频 | 韩国黄色一级毛片 | 一区二区三区免费 | 国产呦系列 欧美呦 日韩呦 | 婷婷综合亚洲 | 日韩成人在线播放 | 成人精品国产亚洲欧洲 | 日本三级黄色网址 | 国产粗大猛烈18p | 亚洲第一精品福利 | 人妖另类xx00视频 | 国产精品高清一区二区三区 | 男人狂躁女人下面视频免费看 | 国产精品成aⅴ人片在线观看 | 国产成人h片视频在线观看 国产成人lu在线视频 | 美国人与性xxxxxxx | 国产亚洲精品美女久久久 | 国产午夜在线观看视频 | 黄色免费网站在线 | 免费黄色一级网站 | 国产一级网站 | 一级特级全黄 | 亚洲精品美女久久久 | 久久99热不卡精品免费观看 | 1000部啪啪勿入十八免费 | 成人免费观看黄a大片夜月 成人免费体验区福利云点播 | 久亚洲精品不子伦一区 | 欧美换爱交换乱理伦片不卡片 | 国产色视频网站免费观看 | 亚洲精品第一区二区在线 | 1769国内精品观看视频 | 欧美一级视频免费观看 | 成人做爰免费看网站 | 午夜丁香 | 久久综合九色综合欧洲 | 麻豆最新网址 | 窝窝午夜看片成人精品 | 视频一区二区三区在线 | 欧美一二区视频 | 中国女警察一级毛片视频 | 免费性视频 |