詳解PHP操作mysql資料庫

來源:互聯網
上載者:User
關鍵字 網路程式設計 PHP教程

運算元據庫是動態網頁程式設計的基礎,本文為你詳細介紹一下php如何操作mysql資料庫

1. 建立和關閉連接
1) mysql_connect()
resource mysql_connect([string hostname [:port][:/path/to/socket][,string username] [,string password]])
所有參數都是可選的
舉例:
@mysql_connect(「localhost」, 「user」, 「password」)
or die(「Could not connect to mysql server!」);
注意,@符號表示禁止失敗嘗試導致的任何錯誤資訊,使用者將看到的是die()中指定的錯誤資訊.


注意,當與多個mysql進行連接時,必須指定每個連接的連結ID,如下:
$link1 = @mysql_connect(「server1″, 「user」, 「password」)
or die(「Could not connect to mysql server!」);
$link2 = @mysql_connect(「server2″, 「user」, 「password」)
or die(「Could not connect to mysql server!」);

2) mysql_pconnect()
resource mysql_pconnect([string hostname [:port][:/path/to/socket][,string username] [,string password]])
與mysql_connect()不同的是:會首先查找現有連結,不存在時才創建.
注意,不需要顯示關閉連接(mysql_close()),因為連接將放在池中,所以叫持久連接.

3) mysql_close()
boolean mysql_close([resource link_id])
關閉連接不是必須的,因為可以由mysql的垃圾回收來處理.
如果沒有指定link_id,則關閉最近的連結.

2. 選擇資料庫
mysql_select_db()
boolean mysql_select_db(string db_name [, resource link_id])

3. 查詢MySql
1) mysql_query()
resource mysql_query(string query [,resource link_id])
負責執行query.

2) mysql_db_query()
     resource mysql_db_query(string database, string query [, resource link_id])
     等價于mysql_select_db() + mysql_query(),從參數中就可以清楚的看出來.
  
4. 獲取和顯示資料
1) mysql_result()
     mixed mysql_result(resource result_set, int row [,mixed field ])
     從result_set 的指定row 中獲取一個field 的資料. 簡單但是效率低.
  
     舉例:


$link1 = @mysql_connect(「server1″, 「webuser」, 「password」)
or die(「Could not connect to mysql server!」);
@mysql_select_db(「company」) or die(「Could not select database!」);

$query = 「select id, name from product order by name」;
$result = mysql_query($query);
$id = mysql_result($result, 0, 「id」);
$name = mysql_result($result, 0, 「name」);

mysql_close();


注意,上述代碼只是輸出結果集中的第一條資料的欄位值,如果要輸出所有記錄,需要迴圈處理.

…
for ($i = 0; $i <= mysql_num_rows($result); $i++)
{
$id = mysql_result($result, 0, 「id」);
$name = mysql_result($result, 0, 「name」);
echo 「Product: $name ($id)」;
}
...



注意,如果查詢欄位名是別名,則mysql_result中就使用別名.

2) mysql_fetch_row()
array mysql_fetch_row(resource result_set)
從result_set中獲取整行,把資料放入陣列中.
舉例(注意和list 的巧妙配合):


...
$query = 「select id, name from product order by name」;
$result = mysql_query($query);
while(list($id, $name) = mysql_fetch_row($result)) {
echo 「Product: $name ($id)」;
}
...



3) mysql_fetch_array()
array mysql_fetch_array(resource result_set [,int result_type])
mysql_fetch_row()的增強版.
將result_set的每一行獲取為一個關聯陣列或/和數值索引陣列.
預設獲取兩種陣列,result_type可以設置:
MYSQL_ASSOC:返回關聯陣列,欄位名=>欄位值
MYSQL_NUM:返回數值索引陣列.
MYSQL_BOTH:獲取兩種陣列.因此每個欄位可以按索引偏移引用,也可以按欄位名引用.
舉例:


     ...
     $query = 「select id, name from product order by name」;
     $result = mysql_query($query);
     while($row = mysql_fetch_array($result, MYSQL_BOTH)) {
          $name = $row['name'];//或者 $name = $row[1];
         $name = $row['id'];//或者 $name = $row[0];
         echo 「Product: $name ($id)」;
     }
     ...



4) mysql_fetch_assoc()
array mysql_fetch_assoc(resource result_set)
相當於 mysql_fetch_array($result, MYSQL_ASSOC)

5) mysql_fetch_object()
object mysql_fetch_object(resource result_set)
和mysql_fetch_array()功能一樣,不過返回的不是陣列,而是一個物件.
舉例:


...
$query = 「select id, name from product order by name」;
$result = mysql_query($query);
while($row = mysql_fetch_object($result)) {
$name = $row->name;
$name = $row->id;
echo 「Product: $name ($id)」;
}
...

5. 所選擇的記錄和受影響的記錄

1) mysql_num_rows()
int mysql_num_rows(resource result_set)
返回result_set中的行數.
注意,mysql_num_rows()只在確定select語句查詢獲得的記錄數有效,如果要獲取insert/updata/delete查詢影響的記錄數,需要使用mysql_affected_rows().

2) mysql_affected_rows()
int mysql_affected_rows([resource link_id])
獲取insert/updata/delete查詢影響的記錄數
注意,不需要輸入參數,預設使用最近建立的資料庫連接的最近結果.可以使用可選參數link_id來選擇資料庫連接.

6. 獲取資料庫和表的資訊
1) mysql_list_dbs()
resource mysql_list_dbs([resource link_id])
獲取伺服器上所有資料庫名稱.
舉例:


mysql_connect(「localhost」, 「name」,」pwd」);
$dbs = mysql_list_dbs();
while (list($db) = mysql_fetch_row(dbs)) {
echo 「$db <br>」;
}


注意,輸出結果與使用的使用者許可權相關.

2) mysql_db_name()
string mysql_db_name(resource result_set, interger index)
獲取在mysql_list_dbs()返回的result_set中位置為index的資料庫名.

3) mysql_list_tables()
resource mysql_list_tables(string database [,resource link_id])
獲取database中的所有表名.

4) mysql_tablename()
string mysql_tablename(resource result_set, interger index)
獲取mysql_list_tables()返回的result_set中位置為index的表名.

在學習PHP的COM 和 . Net(Windows)函數的時候,發現了一個通過COM操作SQL SERVER的例子,查找了相關的資料,於是就有了這篇PHP連接ACCESS的文章,相信網上已經很多了,還是貼在這裡吧。

我的機器環境:WIN2000,APACHE2,PHP Version 5.1.0RC1


<?php
$conn = new COM(「ADODB. Connection」) or die(「Cannot start ADODB. Connection」);
$conn->Open(「Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\php5\netBook.mdb」);
$rs = $conn->Execute(「select * from manage」);    // 記錄集
$num_columns = $rs->Fields->Coun t();
echo $num_columns . 「<br />n」;
for ($i=0; $i < $num_columns; $i++) {
    $fld[$i] = $rs->Fields($i);
}
$rowcount = 0;
while (!$rs->EOF) {
     for ($i=0; $i < $num_columns; $i++)
   &nb sp; {
        echo htmlspecialchars($fld[$i]->value) . 「t」;
    }
     echo 「<br />n」;
    $rowcount++;            // rowcount 自增
    $rs->MoveNext();
}
$rs->Close(); //關閉資料集
$conn->Close();
?>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.