糯米文學吧

位置:首頁 > 計算機 > php語言

PHP操如何操作mysql

php語言2.89W

導讀:PHP操作MySQL資料庫一般可分為5個步驟:1.連線MySQL資料庫伺服器;2.選擇資料庫;3.執行SQL語句;4.關閉結果集;5斷開與MySQL資料庫伺服器連線。

PHP操如何操作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 MySQL