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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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ù)庫連接成功'; }else {echo '數(shù)據(jù)庫連接失敗'; }?>

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

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

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

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

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

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

query:向服務(wù)器發(fā)送的SQL語句。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ù)庫連接關(guān)閉。

對于刪除記錄(delete)、保存記錄(insert)和修改記錄(update)的操作,也是使用query()方法來執(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語句進(jìn)行相應(yīng)的修改即可。

4、預(yù)處理語句

使用預(yù)處理語句可提高重復(fù)使用語句的性能,在PHP中,使用prepare()方法來進(jìn)行預(yù)處理語句查詢,使用execute()方法來執(zhí)行預(yù)準(zhǔn)備語句。PHP有兩種預(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)備語句查詢 $result->execute(); //執(zhí)行預(yù)準(zhǔn)備語句 $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)備語句 $mysqli->close(); //關(guān)閉連接?>

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

(2)綁定參數(shù)

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

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

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

types:綁定的變量的數(shù)據(jù)類型,它接受的字符種類包括4個(gè),如下表所示(參數(shù)types接受的字符的種類和綁定的變量需要一一對應(yīng))。字符種類代表的數(shù)據(jù)類型IintegerDdoubleSstringBblobvar1:綁定的變量,其數(shù)量必須要與SQL語句中的參數(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)備語句 $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()方法,該方法的語法格式如下:

bool mysqli_multi_query ( mysqli $link , string $query )

在執(zhí)行多個(gè)查詢時(shí),除了最后一個(gè)查詢語句,每個(gè)查詢語句之間要用“;”分開。執(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ù)庫中表的類型為InnoDB時(shí),才支持事務(wù)提交,建議使用InnoDB,更建議使用mysqli擴(kuò)展庫了,不僅因?yàn)閙ysqli支持多條sql查詢,更是因?yàn)樗乃俣取⑿阅堋踩煽浚彝耆嫦驅(qū)ο螅?dāng)然也可以是面向過程操作。

看下面mysqli對事務(wù)操作的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('連接錯(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)文章:
主站蜘蛛池模板: 一级毛片一级毛片a毛片欧美 | 国产高清一区 | 久久九九视频 | 欧美亚洲视频一区 | 97在线视频免费 | 91视频一区 | 成人毛片免费在线观看 | 欧美色道 | 亚洲精品午夜在线观看 | 在线观看一级片 | 亚洲视频三级 | 久草网址 | 亚洲国产精品综合久久一线 | 久久91精品国产91久久小草 | 99热精品在线观看 | 国产精品免费一区二区三区 | 亚洲国产小视频 | 日韩精品免费一级视频 | 国产原创系列在线 | 国产日本欧美在线观看 | 真正免费一级毛片在线播放 | 精品欧美一区二区在线看片 | 亚洲国产精品91 | 国产亚洲欧美日韩在线看片 | 成人黄激情免费视频 | 一区二区三区中文字幕 | 精品国产一区二区二三区在线观看 | 欧美亚洲视频在线观看 | 亚洲日产综合欧美一区二区 | 三级网址在线 | 欧美亚洲国产精品久久久久 | 免费小视频在线观看 | 成人欧美视频免费看黄黄 | 久久久久久综合对白国产 | avav男人天堂 | 免费黄色成人 | 成人日韩在线观看 | 日本免费视频观看在线播放 | 在线观看不卡一区 | 国产成人精品综合在线 | 一级黄网站 |