PHP操如何操作mysql詳解
很多人聽說了PHP可能還對它還不是很了解。以下是小編精心為大家整理的關(guān)于PHP操作mysql詳解,希望對大家有所幫助!
數(shù)據(jù)庫基本操作
1)用戶的 Web瀏覽器發(fā)出 HTTP請求,請求特定 Web頁面。
2)Web服務(wù)器收到.php的請求獲取該文件,并將它傳到 PHP引擎,要求它處理。
3)PHP引擎開始解析腳本。腳本中有一條連接數(shù)據(jù)庫的命令,還有執(zhí)行一個查詢的令。命PHP打開通向 MYSQL數(shù)據(jù)庫的連接,發(fā)送適當?shù)牟樵儭?/p>
4)MYSQL服務(wù)器接收數(shù)據(jù)庫查詢并處理。將結(jié)果返回到 PHP引擎。
5)PHP以你去哪干完成腳本運行,通常,這包括將查詢結(jié)果格式化成 HTML格式。然后再輸出 HTML返回到 Web服務(wù)器。
6)Web服務(wù)器將 HTML發(fā)送到瀏覽器。
建立和斷開連接
與 MySQL數(shù)據(jù)庫交互時,首先要建立連接,最后要斷開連接,這包括與服務(wù)器連接并選擇一個數(shù)據(jù)庫 ,以及最后關(guān)閉連接 。與 mysqli幾乎所有的特性一樣 ,這一點可以使用面向?qū)ο蟮姆椒▉硗瓿桑部梢圆捎眠^程化的方式完成。
1.創(chuàng)建一個 mysqli的對象
$_mysqli = newmysqli;
2.連接 MySQL的主機、用戶、密碼、數(shù)據(jù)庫
$_mysqli->connect( 'localhost' , 'root' , 'yangfan' , 'guest' );
3.創(chuàng)建帶連接參數(shù)的 mysqli對象
$_mysqli = newmysqli( 'localhost' , 'root' , 'yangfan' , 'guest' );
4.單獨選擇數(shù)據(jù)庫
$_mysqli->select_db( 'testguest' );
5.斷開 MySQL
$_mysqli->close;
與數(shù)據(jù)庫進行交互
絕大多數(shù)查詢都與創(chuàng)建(Creation) 、獲取 (Retrieval) 、更新 (Update)和刪除 (Deletion)任務(wù)有關(guān),這些任務(wù)統(tǒng)稱為 CRUD 。
1.獲取數(shù)據(jù)
網(wǎng)頁程序大多數(shù)工作都是在獲取和格式化所請求的數(shù)據(jù)。為此,要向數(shù)據(jù)庫發(fā)送
SELECT查詢,再對結(jié)果進行迭代處理,將各行輸出給瀏覽器,并按照自己的要求輸出。
/pic/p>
$_mysqli->set_charset( "utf8" );
/pic/p>
$_sql = "SELECT* FROM t g_user" ;
/pic/p>
$_result = $_mysqli->query( $_sql );
/pic/p>
print_r( $_result->fetch_row);
/pic/p>
$_result->free;
2.解析查詢結(jié)果
一旦執(zhí)行了查詢并準備好結(jié)果集 ,下面就可以解析獲取到的結(jié)果行了 。你可以使用多個方法來獲取各行中的字段 ,具體選擇哪一個方法主要取決于個人喜好 ,因為只是引用字段的方法有所不同。將結(jié)果集放到對象中,由于你可能會使用 mysqli的面向?qū)ο蟮恼Z法 ,所以完全可以采用面向?qū)ο蟮姆绞焦芾斫Y(jié)果集?梢允褂胒etch_object方法來完成。
/pic/p>
$_row = $_reslut->fetch_object;
/pic/p>
echo $_row->tg_username;
/pic/p>
while (!! $_row =$_reslut ->fetch_object) {
echo$_row ->tg_username. ' <br /> ' ;
}
使用索引數(shù)組和關(guān)聯(lián)數(shù)組
/pic/p>
$_row = $_reslut->fetch_array;
/pic/p>
echo $_row [ 3 ];
/pic/p>
$_row = $_reslut->fetch_row;
echo $_row [ 3 ];
/pic/p>
$_row = $_reslut->fetch_assoc;
echo $_row ['tg_username' ];
3.確定所選擇的行和受影響的行
通常希望能夠確定 SELECT查詢返回的行數(shù) ,或者受 INSERT 、 UPDATE或 DELET查詢影響的行數(shù)。我們可以使用num_rows和 affected_rows兩個屬性
/pic/p>
echo $_reslut->num_rows;
/pic/p>
數(shù),可以使用affected_rows;注意,它是 $_mysqli下的屬性
echo $_mysqli->affected_rows;
4.移動指針的操作和獲取字段
當你并不想從第一條數(shù)據(jù)開始獲取 ,或者并不想從第一個字段獲取 ,你可以使用數(shù)據(jù)指針移動或者字段指針移動的方式調(diào)整到恰當?shù)奈恢。當?,你還可以獲取字段的名稱及其相關(guān)的屬性。
/pic/p>
echo $_reslut->field_count;
/pic/p>
$_field = $_reslut->fetch_field;
echo $_field->name;
/pic/p>
while (!! $_field =$_reslut ->fetch_field) {
echo$_field ->name. '<br />' ;
}
/pic/p>
print_r( $_reslut->fetch_fields);
/pic/p>
$_reslut->data_seek( 5 );
/pic/p>
$_reslut->field_seek( 2 );
5.執(zhí)行多條 SQL語句
有的時候 ,我們需要在一張頁面上同時執(zhí)行多條 SQL語句 ,之前的方法就是分別創(chuàng)建多個結(jié)果集然后使用。但這樣資源消耗很大,也不利于管理。PHP提供了執(zhí)行多條 SQL語句
的方法 $_mysqli->multi_query ;
/pic/p>
$_sql .="SELECT * FROM tg_user;" ;
$_sql .="SELECT * FROM tg_photo;" ;
$_sql .="SELECT * FROM tg_article" ;
/pic/p>
if ( $_mysqli->multi_query( $_sql )) {
/pic/p>
$_result= $_mysqli ->store_result;
print_r($_result ->fetch_array);
/pic/p>
$_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.執(zhí)行數(shù)據(jù)庫事務(wù)
事務(wù) (transaction)是作為整個一個單元的一組有序的數(shù)據(jù)庫操作 。如果一組中的所有操作都成功 ,則認為事務(wù)成功 ,即使只有一個失敗操作 ,事務(wù)也不成功 。如果所有操作成功完成 ,事務(wù)則提交 (commit) ,其修改將作用于所有其他數(shù)據(jù)庫進程 。如果一個操作失敗,則事務(wù)將回滾 (roll back),該事務(wù)所有操作的影響都將取消。
首先 ,您的 MySQL是InnoDB或 BDB引擎的一種 ,一般來說 ,你安裝了 AppServ的集成
包 ,你選擇 InnoDB的引擎的數(shù)據(jù)庫即可 。如果你建立的表不是 InnoDB ,可以在 phpmyadmin里修改。
/pic/p>
$_mysqli->autocommit( false );
/pic/p>
$_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;" ;
/pic/p>
if ( $_mysqli->multi_query( $_sql )) {
/pic/p>
$_success= $_mysqli ->affected_rows == 1 ? true : false ;
/pic/p>
$_mysqli->next_result;
/pic/p>
$_success2 = $_mysqli ->affected_rows == 1 ? true : false ;
/pic/p>
if( $_success && $_success2 ) {
$_mysqli->commit;
echo'完美提交! ' ;
}else {
$_mysqli->rollback;
echo'程序出現(xiàn)異常! ' ;
}
}
} else {
echo"SQL語句有誤: " . $_mysqli ->errno. $_mysqli ->error;
}
/pic/p>
$_mysqli->autocommit( true );
【PHP操如何操作mysql詳解】相關(guān)文章:
PHP操如何操作mysql01-22
PHP常用MySql操作10-11
php操作mysql步驟10-13
PHP常用MySql操作的方法03-13
PHP用MySql操作是什么09-15
PHP常用MySql操作是什么03-16
PHP常用MySql操作方法12-17
PHP中MySql操作是什么02-09
php+mysql實現(xiàn)無限分類實例詳解09-11
- 相關(guān)推薦