国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP擴(kuò)展小試牛刀系列之?dāng)?shù)據(jù)庫(kù)擴(kuò)展mysqli詳細(xì)使用教程

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

PHP擴(kuò)展小試牛刀系列之?dāng)?shù)據(jù)庫(kù)擴(kuò)展mysqli詳細(xì)使用教程

mysqli提供了面向?qū)ο蠛兔嫦蜻^(guò)程兩種方式來(lái)與數(shù)據(jù)庫(kù)交互,分別看一下這兩種方式。

1、面向?qū)ο?p>在面向?qū)ο蟮姆绞街校琺ysqli被封裝成一個(gè)類,它的構(gòu)造方法如下:

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

在上述語(yǔ)法中涉及到的參數(shù)說(shuō)明如下。

host:連接的服務(wù)器地址。username:連接數(shù)據(jù)庫(kù)的用戶名,默認(rèn)值是服務(wù)器進(jìn)程所有者的用戶名。passwd:連接數(shù)據(jù)庫(kù)的密碼,默認(rèn)值為空。dbname:連接的數(shù)據(jù)庫(kù)名稱。port:TCP端口號(hào)。socket:UNIX域socket。

要建立與MySQL的連接可以通過(guò)其構(gòu)造方法實(shí)例化mysqli類,例如下面的代碼:

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

mysqli還提供了一個(gè)連接MySQL的成員方法connect()。當(dāng)實(shí)例化構(gòu)造方法為空的mysqli類時(shí),用mysqli對(duì)象調(diào)用connect()方法同樣可連接MySQL,例如,下面的代碼:

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

關(guān)閉與MySQL服務(wù)器的連接通過(guò)mysqli對(duì)象調(diào)用close()方法即可,例如:

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

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

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

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

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

關(guān)閉與MySQL服務(wù)器的連接使用mysqli_close()函數(shù),例如:

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

使用mysqli存取數(shù)據(jù)也包括面向?qū)ο蠛兔嫦蜻^(guò)程兩種方式,在本節(jié)我們只討論如何使用面向?qū)ο蟮姆绞絹?lái)與MySQL交互,關(guān)于mysqli擴(kuò)展中使用面向過(guò)程方式這里就不再詳細(xì)介紹了,有興趣的讀者可參考官方文檔來(lái)獲取相關(guān)的資料。

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

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

在上述語(yǔ)法中涉及到的參數(shù)說(shuō)明如下:

query:向服務(wù)器發(fā)送的SQL語(yǔ)句。resultmode:該參數(shù)接受兩個(gè)值,一個(gè)是MYSQLI_STORE_RESULT,表示結(jié)果作為緩沖集合返回;另一個(gè)是MYSQLI_USE_RESULT,表示結(jié)果作為非緩沖集合返回。

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

<?php $mysqli=new mysqli('localhost','root','root','sunyang'); //實(shí)例化mysqli $query='select * from employee'; $result=$mysqli->query($query); if ($result) {if($result->num_rows>0){ //判斷結(jié)果集中行的數(shù)目是否大于0 while($row =$result->fetch_array() ){ //循環(huán)輸出結(jié)果集中的記錄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為結(jié)果集的一個(gè)屬性,返回結(jié)果集中行的數(shù)目。方法fetch_array()將結(jié)果集中的記錄放入一個(gè)數(shù)組中并將其返回。最后使用free()方法將結(jié)果集中的內(nèi)存釋放,使用close()方法將數(shù)據(jù)庫(kù)連接關(guān)閉。

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

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

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

4、預(yù)處理語(yǔ)句

使用預(yù)處理語(yǔ)句可提高重復(fù)使用語(yǔ)句的性能,在PHP中,使用prepare()方法來(lái)進(jìn)行預(yù)處理語(yǔ)句查詢,使用execute()方法來(lái)執(zhí)行預(yù)準(zhǔn)備語(yǔ)句。PHP有兩種預(yù)處理語(yǔ)句:一種是綁定結(jié)果,另一種是綁定參數(shù)。

(1)綁定結(jié)果

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

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

在綁定結(jié)果的時(shí)候,腳本中的變量要與結(jié)果集中的字段一一對(duì)應(yīng),綁定完以后,通過(guò)fetch()方法將綁定在結(jié)果集中的變量一一取出來(lái),最后將預(yù)處理和數(shù)據(jù)庫(kù)連接分別關(guān)閉。

(2)綁定參數(shù)

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

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

在上述語(yǔ)法中涉及到的參數(shù)說(shuō)明如下。

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

綁定參數(shù)的示例代碼如下:

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

在一個(gè)腳本中還可以同時(shí)綁定參數(shù)和綁定結(jié)果,示例代碼如下:

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

mysqli擴(kuò)展提供了能連續(xù)執(zhí)行多個(gè)查詢的multi_query()方法,該方法的語(yǔ)法格式如下:

bool mysqli_multi_query ( mysqli $link , string $query )

在執(zhí)行多個(gè)查詢時(shí),除了最后一個(gè)查詢語(yǔ)句,每個(gè)查詢語(yǔ)句之間要用“;”分開(kāi)。執(zhí)行多個(gè)查詢的示例代碼如下:

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

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

6、事務(wù)操作

首先只有數(shù)據(jù)庫(kù)中表的類型為InnoDB時(shí),才支持事務(wù)提交,建議使用InnoDB,更建議使用mysqli擴(kuò)展庫(kù)了,不僅因?yàn)閙ysqli支持多條sql查詢,更是因?yàn)樗乃俣取⑿阅堋踩煽浚彝耆嫦驅(qū)ο螅?dāng)然也可以是面向過(guò)程操作。

看下面mysqli對(duì)事務(wù)操作的php代碼:

<?php header('Content:text/html;charset=utf-8'); /*mysqli面向過(guò)程操作www.phpddt.com*/ $mysqli = new mysqli(’localhost’,’root’,’’,’test’); $mysqli->query('set names utf8'); if ($mysqli->connect_error){die('連接錯(cuò)誤:'.$mysqli->connect_error); } //將事務(wù)提交設(shè)為false $mysqli->autocommit(false); $sql = 'insert into `user` values(null,’小紅’,md5(123),’321321’)'; $sql2 = 'insert into `user` values(null,’小王’,md5(321),’dasf’)'; //執(zhí)行操作,返回的是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();?>

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 91色综合久久 | 欧美一区在线观看视频 | 亚洲在成人网在线看 | 欧美一级日韩一级 | 六月成人网 | 精品国产品欧美日产在线 | 国产一级特黄a大片99 | 一级特黄a视频 | 美女黄网站人色视频免费国产 | 亚洲欧洲日产国码二区在线 | a欧美| 免费观看欧美一级高清 | 日韩欧一级毛片在线播无遮挡 | 亚洲国产成人麻豆精品 | 日韩亚洲欧美综合一区二区三区 | 欧美成人a级在线视频 | 亚洲精品无码不卡在线播放he | 国产精品久久久久免费视频 | 福利岛国深夜在线 | 男女毛片免费视频看 | 日本视频在线免费观看 | 一区二区三区在线视频观看 | 欧美精品亚洲 | 成人禁在线观看网站 | 美一级片 | 国产一区三区二区中文在线 | 亚洲免费区 | a级片在线| 亚洲精品一区二区不卡 | 欧美日韩在线观看免费 | 美女作爱网站 | 毛片久久 | 艹美女视频 | 亚洲一区免费看 | 国产成年网站v片在线观看 国产成人aa在线视频 | 99精品视频免费 | 毛片在线免费播放 | 欧美成人吃奶高清视频 | 日韩欧美综合 | 在线精品播放 | 99ri在线精品视频 |