日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

php中mysql_PHP中MySQL操作

發(fā)布時(shí)間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php中mysql_PHP中MySQL操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本次使用的demo是MySQL的示例數(shù)據(jù)庫employees,

PHP中的demo代碼可以在

這里使用的是

一、連接數(shù)據(jù)庫

1.1、連接

打開一個(gè)到 MySQL 服務(wù)器的連接。有面向?qū)ο箫L(fēng)格和過程化風(fēng)格。

$link = mysqli_connect("localhost", "root", "123456", "employees");//面向過程

$link = new mysqli("localhost", "root", "123456", "employees");//面向?qū)ο?/p>

如果成功則返回一個(gè) MySQL 連接對(duì)象, 或者在失敗時(shí)返回 FALSE。

1.2、設(shè)置編碼

設(shè)置在數(shù)據(jù)庫間傳輸字符時(shí)所用的默認(rèn)字符編碼。

$link->query("SET NAMES utf8");//執(zhí)行語句

mysqli_set_charset($link, 'utf8');//面向過程

$link->set_charset('utf8');//面向?qū)ο?/p>

成功時(shí)返回 TRUE, 或者在失敗時(shí)返回 FALSE。

二、查詢

2.1、對(duì)數(shù)據(jù)庫執(zhí)行一次查詢

$sql = 'select * from employees limit 10';$result = mysqli_query($link, $sql);//面向過程

$result = $link->query($sql);//面向?qū)ο?/p>

失敗時(shí)返回 FALSE,成功執(zhí)行SELECT, SHOW, DESCRIBE或 EXPLAIN查詢會(huì)返回一個(gè)對(duì)象,其他查詢則返回TRUE。

接下來的2和3就是根據(jù)

還有就是下面的所有方法都有面向過程和面向?qū)ο蟮姆绞?#xff0c;為了節(jié)省篇幅,下面例子都是面向?qū)ο蟮姆绞健?/p>

2.2、查詢記錄獲取

fetch_all、fetch_array、fetch_assoc與fetch_row,返回的是array。

fetch_fields、fetch_field、fetch_object與fetch_field_direct,返回是stdClass Object。

重置指針到起始,當(dāng)做fetch_fields、fetch_assoc等讀取數(shù)據(jù)的時(shí)候,指針會(huì)變化。

返回記錄數(shù)組,這個(gè)方法有可以傳遞一個(gè)參數(shù)resulttype,三個(gè)常量MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH。默認(rèn)是MYSQLI_NUM。

$data = $result->fetch_all(MYSQLI_ASSOC);

獲取所有結(jié)果行并返回結(jié)果集作為關(guān)聯(lián)數(shù)組,數(shù)字?jǐn)?shù)組,或兩者兼而有之。

下面的第一張返回結(jié)果圖,引用的參數(shù)是MYSQLI_ASSOC,第二張引用的參數(shù)是MYSQLI_NUM。其實(shí)就是key的不同。

返回一條記錄數(shù)組,或沒有記錄返回NULL。與fetch_all一樣,也有個(gè)參數(shù)resulttype,三個(gè)常量供選擇。默認(rèn)是MYSQLI_BOTH。

$data = $result->fetch_array(MYSQLI_ASSOC);

沒有resulttype參數(shù),返回的是一條關(guān)聯(lián)數(shù)組,或者沒記錄返回NULL。如果數(shù)組中包含相同的鍵名,那么將取最后一列。

同樣沒有resulttype參數(shù),返回的是一條數(shù)字?jǐn)?shù)組,或者沒有記錄返回NULL。

用此方法獲取表中所有的字段信息,包括字段名、字段長度、所屬表等。

返回多個(gè)對(duì)象的數(shù)組,如果沒有就返回FALSE。

與上面的方法相對(duì),只會(huì)獲取某一個(gè)字段信息。配合

返回一個(gè)對(duì)象的數(shù)組,如果沒有就返回FALSE。

$result->field_seek(1);$fields = $result->fetch_field();

注意上面的代碼,返回的將是第二個(gè)字段的信息。

可以傳入兩個(gè)參數(shù)class_name和params,返回一個(gè)關(guān)聯(lián)對(duì)象,如果沒有數(shù)據(jù)返回NULL。

可以傳入一個(gè)參數(shù)fieldnr,也就是字段的位置。效果等效于上面的

2.3、插入更新等信息獲取

employees表的主鍵原先不是自增長的,我后面改了下字段,目前表中有499999條數(shù)據(jù)。

$sql = "insert into employees(`birth_date`,`first_name`,`last_name`,`gender`,`hire_date`) values ('1988-10-9', 'pw', 'strick', 'M', '1988-10-9')";$result = $link->query($sql);var_dump($link->affected_rows);//受影響行數(shù)

var_dump($link->insert_id);//主鍵

//print_r(mysqli_error($link));//打印錯(cuò)誤信息

上面的$result返回的將是一個(gè)boolean值,而主鍵和影響行數(shù)是需要從mysqli對(duì)象中獲取。

三、預(yù)處理

3.1、添加更新等操作

預(yù)處理能有效的防止sql注入的產(chǎn)生,

$sql = "insert into employees(`birth_date`,`first_name`,`last_name`,`gender`,`hire_date`) values (?,?,?,?,?)";$stmt = $link->prepare($sql);//獲得預(yù)處理對(duì)象//bind_param中的第N個(gè)參數(shù),必須得用變量賦值

$birth_date = '1989-10-9';$first_name = 'pw2';$last_name = 'strick2';$gender = 'M';$hire_date = '1988-10-9';$stmt->bind_param('sssss', $birth_date, $first_name, $last_name, $gender, $hire_date);//綁定時(shí)使用變量綁定

//$stmt->bind_param('sssss', '1989-10-9', 'pw2', 'strick2', 'M', '1988-10-9');//不能使用這種方式

$stmt->execute();//執(zhí)行預(yù)處理

var_dump($stmt->insert_id);//主鍵

var_dump($stmt->affected_rows);//受影響行數(shù)

初始化一個(gè)預(yù)處理對(duì)象,傳入string類型的查詢語句。返回一個(gè)FALSE。

綁定預(yù)處理查詢語句中的變量。第一個(gè)參數(shù)是指定數(shù)據(jù)類型。

3.2、查詢

$sql = 'select * from employees limit ?';$stmt = $link->prepare($sql);$count = 10;$stmt->bind_param("i", $count);$stmt->execute();$result = $stmt->get_result();//結(jié)果集取后的操作就和之前一樣了

demo數(shù)據(jù)庫下載:

demo代碼下載:

參考資料:

總結(jié)

以上是生活随笔為你收集整理的php中mysql_PHP中MySQL操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。