PHP操如何操作mysql
導讀:PHP操作MySQL數據庫一般可分為5個步驟:1.連接MySQL數據庫服務器;2.選擇數據庫;3.執行SQL語句;4.關閉結果集;5斷開與MySQL數據庫服務器連接。
數據庫基本操作
1)用户的 Web瀏覽器發出 HTTP請求,請求特定 Web頁面。
2)Web服務器收到的請求獲取該文件,並將它傳到 PHP引擎,要求它處理。
3)PHP引擎開始解析腳本。腳本中有一條連接數據庫的命令,還有執行一個查詢的令。命PHP打開通向 MYSQL數據庫的連接,發送適當的查詢。
4)MYSQL服務器接收數據庫查詢並處理。將結果返回到 PHP引擎。
5)PHP以你去哪幹完成腳本運行,通常,這包括將查詢結果格式化成 HTML格式。然後再輸出 HTML返回到 Web服務器。
6)Web服務器將 HTML發送到瀏覽器。
建立和斷開連接
與 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;
與數據庫進行交互
絕大多數查詢都與創建(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. '
' ;
}
//一次性取得字段數組
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'sql語句有誤! ' ;
}
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'完美提交! ' ;
}else {
$_mysqli->rollback;
echo'程序出現異常! ' ;
}
}
} else {
echo"SQL語句有誤: " . $_mysqli ->errno. $_mysqli ->error;
}
//最後還必須開啟自動提交
$_mysqli->autocommit( true );
-
用PHP的checkbox默認值輸出方法
php獲取checkbox複選框值的方法,checkbox在php讀取值時要用數組形式哦,我們讀取這些值用phppost獲取是以一個array形式哦。php獲取checkbox複選框值的.方法複製代碼代碼如下:<htmlxmlns=""><head><metahttp-equiv="Content-Type"content="text/html;charset=gb23...
-
PHP入門學習方法
每個人的學習方式不同,寫這篇文章的目的是分享一下自己的學習過程,僅供參考,不要一味的用別人的學習方法,找對自己有用的學習方式,關於php語言怎麼學呢?下面是相關的知識,歡迎閲讀。其實學習一門新語言並不是太難,重要的是你有沒有準備好去學好它,時間的長短和個人的能...
-
PHP與UTF-8之間的最佳實踐
《PHP中的字符串、編碼、UTF-8》一文中描述了一些列的基礎知識,比較枯燥,現在來説點有用的——PHP字符串處理的最佳實踐,本文是PHP、字符串、編碼、UTF-8相關知識的第二部分。先説結論——在PHP中的各個方面使用UTF-8編碼。希望對大家學習PHP...
-
PHP考試筆試題
用寶珠打扮自己,不如用知識充實自己。以下是小編為大家搜索整理的PHP考試筆試題,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!1、{PHP題目}標識符是變量的名稱。PHP中的標識符用$+變量名來表示。標識符在PHP中遵循下列選項中的那些規則?()...