亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語(yǔ)言

PHP操如何操作mysql

時(shí)間:2024-09-19 07:20:19 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

PHP操如何操作mysql

  導(dǎo)讀:PHP操作MySQL數(shù)據(jù)庫(kù)一般可分為5個(gè)步驟:1.連接MySQL數(shù)據(jù)庫(kù)服務(wù)器;2.選擇數(shù)據(jù)庫(kù);3.執(zhí)行SQL語(yǔ)句;4.關(guān)閉結(jié)果集;5斷開(kāi)與MySQL數(shù)據(jù)庫(kù)服務(wù)器連接。

  數(shù)據(jù)庫(kù)基本操作

  1)用戶的 Web瀏覽器發(fā)出 HTTP請(qǐng)求,請(qǐng)求特定 Web頁(yè)面。

  2)Web服務(wù)器收到.php的請(qǐng)求獲取該文件,并將它傳到 PHP引擎,要求它處理。

  3)PHP引擎開(kāi)始解析腳本。腳本中有一條連接數(shù)據(jù)庫(kù)的命令,還有執(zhí)行一個(gè)查詢的令。命PHP打開(kāi)通向 MYSQL數(shù)據(jù)庫(kù)的連接,發(fā)送適當(dāng)?shù)牟樵儭?/p>

  4)MYSQL服務(wù)器接收數(shù)據(jù)庫(kù)查詢并處理。將結(jié)果返回到 PHP引擎。

  5)PHP以你去哪干完成腳本運(yùn)行,通常,這包括將查詢結(jié)果格式化成 HTML格式。然后再輸出 HTML返回到 Web服務(wù)器。

  6)Web服務(wù)器將 HTML發(fā)送到瀏覽器。

  建立和斷開(kāi)連接

  與 MySQL數(shù)據(jù)庫(kù)交互時(shí),首先要建立連接,最后要斷開(kāi)連接,這包括與服務(wù)器連接并選擇一個(gè)數(shù)據(jù)庫(kù) ,以及最后關(guān)閉連接 。與 mysqli幾乎所有的特性一樣 ,這一點(diǎn)可以使用面向?qū)ο蟮姆椒▉?lái)完成,也可以采用過(guò)程化的方式完成。

  1.創(chuàng)建一個(gè) mysqli的對(duì)象

  $_mysqli = newmysqli;

  2.連接 MySQL的主機(jī)、用戶、密碼、數(shù)據(jù)庫(kù)

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

  3.創(chuàng)建帶連接參數(shù)的 mysqli對(duì)象

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

  4.單獨(dú)選擇數(shù)據(jù)庫(kù)

  $_mysqli->select_db( 'testguest' );

  5.斷開(kāi) MySQL

  $_mysqli->close;

  與數(shù)據(jù)庫(kù)進(jìn)行交互

  絕大多數(shù)查詢都與創(chuàng)建(Creation) 、獲取 (Retrieval) 、更新 (Update)和刪除 (Deletion)任務(wù)有關(guān),這些任務(wù)統(tǒng)稱(chēng)為 CRUD 。

  1.獲取數(shù)據(jù)

  網(wǎng)頁(yè)程序大多數(shù)工作都是在獲取和格式化所請(qǐng)求的數(shù)據(jù)。為此,要向數(shù)據(jù)庫(kù)發(fā)送

  SELECT查詢,再對(duì)結(jié)果進(jìn)行迭代處理,將各行輸出給瀏覽器,并按照自己的要求輸出。

  //設(shè)置一下編碼 utf8

  $_mysqli->set_charset( "utf8" );

  //創(chuàng)建一句 SQL語(yǔ)句

  $_sql = "SELECT* FROM t g_user" ;

  //執(zhí)行 sql語(yǔ)句把結(jié)果集賦給$_result

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

  //將結(jié)果集的第一行輸出

  print_r( $_result->fetch_row);

  //釋放查詢內(nèi)存 (銷(xiāo)毀 )

  $_result->free;

  2.解析查詢結(jié)果

  一旦執(zhí)行了查詢并準(zhǔn)備好結(jié)果集 ,下面就可以解析獲取到的結(jié)果行了 。你可以使用多個(gè)方法來(lái)獲取各行中的字段 ,具體選擇哪一個(gè)方法主要取決于個(gè)人喜好 ,因?yàn)橹皇且米侄蔚姆椒ㄓ兴煌。將結(jié)果集放到對(duì)象中,由于你可能會(huì)使用 mysqli的面向?qū)ο蟮恼Z(yǔ)法 ,所以完全可以采用面向?qū)ο蟮姆绞焦芾斫Y(jié)果集?梢允褂胒etch_object方法來(lái)完成。

  //將結(jié)果集包裝成對(duì)象

  $_row = $_reslut->fetch_object;

  //輸出對(duì)象中的一個(gè)字段(屬性)

  echo $_row->tg_username;

  //遍歷所有的用戶名稱(chēng)

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

  echo$_row ->tg_username. '
' ;

  }

  使用索引數(shù)組和關(guān)聯(lián)數(shù)組

  //將結(jié)果集包裝成數(shù)組 (索引 +關(guān)聯(lián) )

  $_row = $_reslut->fetch_array;

  //輸出下標(biāo)是 3的字段(屬性)

  echo $_row [ 3 ];

  //將結(jié)果集包裝成索引數(shù)組

  $_row = $_reslut->fetch_row;

  echo $_row [ 3 ];

  //將結(jié)果集包裝成關(guān)聯(lián)數(shù)組

  $_row = $_reslut->fetch_assoc;

  echo $_row ['tg_username' ];

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

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

  //當(dāng)使用查詢時(shí),想了解 SELECT查詢了多少行,可以使用 num_rows 。

  echo $_reslut->num_rows;

  //當(dāng)使用查詢時(shí) ,想了解SELECT 、 INSERT 、 UPDATE 、 DELETE查詢時(shí)影響的行

  數(shù),可以使用affected_rows;注意,它是 $_mysqli下的屬性

  echo $_mysqli->affected_rows;

  4.移動(dòng)指針的操作和獲取字段

  當(dāng)你并不想從第一條數(shù)據(jù)開(kāi)始獲取 ,或者并不想從第一個(gè)字段獲取 ,你可以使用數(shù)據(jù)指針移動(dòng)或者字段指針移動(dòng)的方式調(diào)整到恰當(dāng)?shù)奈恢谩.?dāng)然 ,你還可以獲取字段的名稱(chēng)及其相關(guān)的屬性。

  //計(jì)算有多少條字段

  echo $_reslut->field_count;

  //獲取字段的名稱(chēng)

  $_field = $_reslut->fetch_field;

  echo $_field->name;

  //遍歷字段

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

  echo$_field ->name. '
' ;

  }

  //一次性取得字段數(shù)組

  print_r( $_reslut->fetch_fields);

  //移動(dòng)數(shù)據(jù)指針

  $_reslut->data_seek( 5 );

  //移動(dòng)字段指針

  $_reslut->field_seek( 2 );

  5.執(zhí)行多條 SQL語(yǔ)句

  有的時(shí)候 ,我們需要在一張頁(yè)面上同時(shí)執(zhí)行多條 SQL語(yǔ)句 ,之前的方法就是分別創(chuàng)建多個(gè)結(jié)果集然后使用。但這樣資源消耗很大,也不利于管理。PHP提供了執(zhí)行多條 SQL語(yǔ)句

  的方法 $_mysqli->multi_query ;

  //創(chuàng)建多條 SQL語(yǔ)句

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

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

  $_sql .="SELECT * FROM tg_article" ;

  //開(kāi)始執(zhí)行多條 SQL語(yǔ)句

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

  //開(kāi)始獲取第一條 SQL語(yǔ)句的結(jié)果集

  $_result= $_mysqli ->store_result;

  print_r($_result ->fetch_array);

  //將結(jié)果集指針移到下一個(gè)

  $_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語(yǔ)句有誤! ' ;

  }

  6.執(zhí)行數(shù)據(jù)庫(kù)事務(wù)

  事務(wù) (transaction)是作為整個(gè)一個(gè)單元的一組有序的數(shù)據(jù)庫(kù)操作 。如果一組中的所有操作都成功 ,則認(rèn)為事務(wù)成功 ,即使只有一個(gè)失敗操作 ,事務(wù)也不成功 。如果所有操作成功完成 ,事務(wù)則提交 (commit) ,其修改將作用于所有其他數(shù)據(jù)庫(kù)進(jìn)程 。如果一個(gè)操作失敗,則事務(wù)將回滾 (roll back),該事務(wù)所有操作的影響都將取消。

  首先 ,您的 MySQL是InnoDB或 BDB引擎的一種 ,一般來(lái)說(shuō) ,你安裝了 AppServ的集成

  包 ,你選擇 InnoDB的引擎的數(shù)據(jù)庫(kù)即可 。如果你建立的表不是 InnoDB ,可以在 phpmyadmin里修改。

  //首先你必須關(guān)閉自動(dòng)提交數(shù)據(jù)

  $_mysqli->autocommit( false );

  //創(chuàng)建一個(gè) SQL語(yǔ)句,必須同時(shí)運(yùn)行成功,不能出現(xiàn)一個(gè)成功,一個(gè)失敗

  $_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;" ;

  //執(zhí)行兩條 SQL語(yǔ)句

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

  //獲取第一條 SQL一影響的行數(shù)

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

  //下移,第二條 SQL

  $_mysqli->next_result;

  //獲取第二條 SQL影響的行數(shù)

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

  //判斷是否都正常通過(guò)了,兩個(gè) SQL

  if( $_success && $_success2 ) {

  $_mysqli->commit;

  echo'完美提交! ' ;

  }else {

  $_mysqli->rollback;

  echo'程序出現(xiàn)異常! ' ;

  }

  }

  } else {

  echo"SQL語(yǔ)句有誤: " . $_mysqli ->errno. $_mysqli ->error;

  }

  //最后還必須開(kāi)啟自動(dòng)提交

  $_mysqli->autocommit( true );

【PHP操如何操作mysql】相關(guān)文章:

PHP常用MySql操作07-26

PHP常用MySql操作的方法10-11

PHP常用MySql操作是什么11-05

PHP用MySql操作是什么09-06

PHP中MySql操作是什么07-24

PHP操作MySQL數(shù)據(jù)庫(kù)的基本類(lèi)10-14

php與php MySQL之間的關(guān)系10-03

php查詢mysql的實(shí)例09-09

MYSQL操作命令05-29

關(guān)于php操作mysql執(zhí)行數(shù)據(jù)庫(kù)查詢08-11