搜尋
首頁後端開發php教程PHP使用mysqli操作MySQL資料庫的方法

PHP使用mysqli操作MySQL資料庫的方法

May 26, 2018 am 11:04 AM
mysqlmysqliphp

這篇文章主要介紹PHP使用mysqli操作MySQL資料庫的方法,有興趣的朋友參考下,希望對大家有幫助。

PHP的 mysqli 擴充功能提供了其先行版本的所有功能,此外,由於 MySQL 已經是一個具有完整特性的資料庫伺服器 , 這為PHP 又添加了一些新特性 。而 mysqli 恰恰也支援了這些新特性。

一.建立和斷開連接

與 MySQL資料庫互動時,首先要建立連接,最後要斷開連接,這包括與伺服器連接並選擇一個資料庫 , 以及最後關閉連接 。與 mysqli 幾乎所有的特性一樣 , 這一點可以使用物件導向的方法來完成,也可以採用過程化的方式完成。

1. 建立一個mysqli 的物件

$_mysqli = newmysqli();

# 2. 連結MySQL的主機、使用者、密碼、資料庫

$_mysqli->connect( 'localhost' , 'root' , 'yangfan' , 'guest' );

3. 建立連接參數的mysqli物件

$_mysqli = newmysqli( 'localhost' , 'root' , 'yangfan' , 'guest ' );

4. 單獨選擇資料庫

$_mysqli->select_db( 'testguest' );

5. 斷開MySQL

$_mysqli->close();

二.處理連線錯誤

如果無法連接 MySQL資料庫,那麼這個頁面不太可能繼續完成預期的工作。因此,一定要注意監視連接錯誤並相應地做出反應 。 Mysqli 擴充包含有許多特性可以用來擷取錯誤訊息,例如:mysqli_connect_errno() 和 mysqli_connect_error() 方法。

mysqli_connect_errno()函數傳回連接資料庫傳回的錯誤號碼。

Mysqli_connect_error()函數傳回連接資料庫傳回的錯誤代碼。

if(mysqli_connect_errno()) {

echo' 数据库连接错误,错误信息: ' .mysqli_connect_error();

exit();

}


errno屬性傳回資料庫操作時的錯誤號碼。

error屬性傳回資料庫操作時的錯誤代碼。

if( $_mysqli ->errno) {

echo' 数据库操作时发生错误,错误代码是: ' . $_mysqli ->error;

}

三.與資料庫互動

絕大多數查詢都與建立(Creation) 、取得 (Retrieval) 、更新 (Update) 和刪除 (Deletion) 任務有關,這些任務統稱為 CRUD 。

1. 取得資料

網頁程式大多數工作都是在取得和格式化所要求的資料。為此,要向資料庫發送SELECT查詢,再對結果進行迭代處理,將各行輸出給瀏覽器,並依照自己的要求輸出。

// 设置一下编码 utf8

$_mysqli->set_charset( "utf8" );

// 创建一句 SQL 语句

$_sql = "SELECT* FROM t g_user" ;

// 执行 sql 语句把结果集赋给$_result

$_result = $_mysqli->query( $_sql );

// 将结果集的第一行输出

print_r( $_result->fetch_row());

// 释放查询内存 ( 销毁 )

$_result->free();

2. 解析查詢結果

一旦執行了查詢並準備好結果集,下面就可以解析取得到的結果行了。你可以使用多個方法來取得各行中的欄位 ,具體選擇哪一個方法主要取決於個人喜好 , 因為只是引用欄位的方法有所不同。

將結果集放到物件中

由於你可能會使用 mysqli的物件導向的語法 , 所以完全可以採用物件導向的方式來管理結果集。可以使用fetch_object() 方法來完成。

// 將結果集包裝成物件

$_row = $_reslut->fetch_object();

// 輸出物件中的一個欄位(屬性)

echo $_row->tg_username;

// 遍歷所有的使用者名稱

while (!! $_row =$_reslut ->fetch_object()) {

echo$_row ->tg_username. '
' ;

}

##使用索引數組和關聯數組

// 將結果集包裝成陣列( 索引關聯)

$_row = $_reslut->fetch_array();

// 輸出下標是3 的欄位(屬性)

echo $_row [ 3 ];

// 將結果集包裝成索引陣列

$_row = $_reslut->fetch_row();

echo $_row [ 3 ];

// 將結果集包裝成關聯數組

$_row = $_reslut->fetch_assoc();

echo $_row ['tg_username' ];

3. 確定所選的行和受影響的行

通常希望能夠確定SELECT查詢傳回的行數, 或受INSERT 、 UPDATE 或DELET 查詢影響的行數。我們可以使用num_rows 和 affected_rows 兩個屬性

// 當使用查詢時,想了解 SELECT查詢了多少行,可以使用 num_rows 。

echo $_reslut->num_rows;

// 使用查詢時, 想了解SELECT 、 INSERT 、 UPDATE 、 DELETE 查詢時影響的行數,可以使用affected_rows; 注意,它是$_mysqli 下的屬性

echo $_mysqli->affected_rows;

4. 移动指针的操作和获取字段

当你并不想从第一条数据开始获取 ,或者并不想从第一个字段获取 , 你可以使用数据指针移动或者字段指针移动的方式调整到恰当的位置。 当然 , 你还可以获取字段的名称及其相关的属性。

// 计算有多少条字段

echo $_reslut->field_count;

// 获取字段的名称

$_field = $_reslut->fetch_field();

echo $_field->name;

// 遍历字段

while (!! $_field =$_reslut ->fetch_field()) {

echo$_field ->name. &#39;<br />&#39; ;

}

// 一次性取得字段数组

print_r( $_reslut->fetch_fields());

// 移动数据指针

$_reslut->data_seek( 5 );

// 移动字段指针

$_reslut->field_seek( 2 );

5. 执行多条 SQL 语句

有的时候 ,我们需要在一张页面上同时执行多条 SQL 语句 , 之前的方法就是分别创建多个结果集然后使用。但这样资源消耗很大,也不利于管理。PHP 提供了执行多条 SQL 语句的方法 $_mysqli->multi_query() ;

// 创建多条 SQL 语句

$_sql .="SELECT * FROM tg_user;" ;

$_sql .="SELECT * FROM tg_photo;" ;

$_sql .="SELECT * FROM tg_article" ;

// 开始执行多条 SQL 语句

if ( $_mysqli->multi_query( $_sql )) {

//开始获取第一条 SQL 语句的结果集

$_result= $_mysqli ->store_result();

print_r($_result ->fetch_array());

//将结果集指针移到下一个

$_mysqli->next_result();

$_result= $_mysqli ->store_result();

print_r($_result ->fetch_array());

$_mysqli->next_result();

$_result= $_mysqli ->store_result();

print_r($_result ->fetch_array());

} else {

echo&#39;sql 语句有误! &#39; ;

}

6. 执行数据库事务

事务 (transaction)是作为整个一个单元的一组有序的数据库操作 。 如果一组中的所有操作都成功 , 则认为事务成功 ,即使只有一个失败操作 , 事务也不成功 。 如果所有操作成功完成 , 事务则提交 (commit) ,其修改将作用于所有其他数据库进程 。 如果一个操作失败 , 则事务将回滚 (roll back),该事务所有操作的影响都将取消。

首先 , 您的 MySQL 是InnoDB 或 BDB 引擎的一种 , 一般来说 , 你安装了 AppServ 的集成包 , 你选择 InnoDB的引擎的数据库即可 。 如果你建立的表不是 InnoDB , 可以在 phpmyadmin里修改。

// 首先你必须关闭自动提交数据

$_mysqli->autocommit( false );

// 创建一个 SQL 语句,必须同时运行成功,不能出现一个成功,一个失败

$_sql .="UPDATE tg_friend SET tg_state=tg_state+5 WHERE tg_id=1;" ;

$_sql .="UPDATE tg_flower SET tg_flower=tg_flower-5 WHERE tg_id=1;" ;

// 执行两条 SQL 语句

if ( $_mysqli->multi_query( $_sql )) {

//获取第一条 SQL 一影响的行数

$_success= $_mysqli ->affected_rows == 1 ? true : false ;

//下移,第二条 SQL

$_mysqli->next_result();

//获取第二条 SQL 影响的行数

$_success2 = $_mysqli ->affected_rows == 1 ? true : false ;

//判断是否都正常通过了,两个 SQL

if( $_success && $_success2 ) {

$_mysqli->commit();

echo&#39; 完美提交! &#39; ;

}else {

$_mysqli->rollback();

echo&#39; 程序出现异常! &#39; ;

}

}

} else {

echo"SQL 语句有误: " . $_mysqli ->errno. $_mysqli ->error;

}

// 最后还必须开启自动提交

$_mysqli->autocommit( true );

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

nodejs连接mysql数据库及基本知识点详解

php基于PDO实现功能强大的MYSQL封装类实例详解

php+mysql+jquery实现日历签到功能的方法

以上是PHP使用mysqli操作MySQL資料庫的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何在PHP中創建和使用接口?您如何在PHP中創建和使用接口?Apr 30, 2025 pm 03:40 PM

本文解釋瞭如何創建,實施和使用PHP中的接口,重點關注其對代碼組織和可維護性的好處。

crypt()和password_hash()有什麼區別?crypt()和password_hash()有什麼區別?Apr 30, 2025 pm 03:39 PM

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

如何防止PHP中的跨站點腳本(XSS)?如何防止PHP中的跨站點腳本(XSS)?Apr 30, 2025 pm 03:38 PM

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。

PHP中的自動加載是什麼?PHP中的自動加載是什麼?Apr 30, 2025 pm 03:37 PM

自動加載PHP會在需要時自動加載類文件,從而通過減少內存使用和增強代碼組織來提高性能。最佳實踐包括使用PSR-4和有效組織代碼。

什麼是PHP流?什麼是PHP流?Apr 30, 2025 pm 03:36 PM

PHP流通過一致的API來統一資源諸如文件,網絡插座和壓縮格式之類的處理,從而使復雜性抽象並增強代碼靈活性和效率。

可以使用PHP上傳的文件的最大大小是多少?可以使用PHP上傳的文件的最大大小是多少?Apr 30, 2025 pm 03:35 PM

本文討論了在PHP中管理文件上傳大小的管理,重點是2MB的默認限制以及如何通過修改PHP.INI設置來增加它。

PHP中的無效類型是什麼?PHP中的無效類型是什麼?Apr 30, 2025 pm 03:34 PM

本文討論了PHP 7.1中引入的PHP中的無效類型,允許變量或參數為指定類型或NULL。它突出顯示了諸如提高可讀性,類型安全性和明確意圖的好處,並解釋瞭如何聲明

unset()和unlink()函數之間有什麼區別?unset()和unlink()函數之間有什麼區別?Apr 30, 2025 pm 03:33 PM

本文討論了unset()和unlink()功能在編程中的差異,重點關注其目的和用例。 unset()從內存中刪除變量,而unlink()從文件系統中刪除文件。兩者都對效率至關重要

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具