跳轉到內容

PHP 和 MySQL 程式設計/資料庫連線

來自華夏公益教科書

您只能在檔案中儲存資訊,只能做這麼多。當您需要儲存大量資料,並在這些資料上執行密集的數字運算時,沒有比好的 SQL 資料庫更好的了。在本節中,我們將討論將 PHP 連線到 MySQL 資料庫並執行查詢以及從資料庫中檢索資料。

開啟與 MySQL 資料庫的連線

[編輯 | 編輯原始碼]

在我們能夠與任何資料庫互動之前,我們需要做的第一件事是開啟與該資料庫伺服器的連線。這是透過使用mysql_connect()函式完成的,該函式返回一個數據庫處理程式,類似於處理檔案時的檔案處理程式。然後使用資料庫處理程式選擇要使用的活動資料庫。

以下是建立與資料庫伺服器的連線以及選擇要使用的資料庫的程式碼

 $db = "database1";
 $link = mysql_connect("localhost", "username", "password");
 mysql_select_db($db, $link);

或者

<?php
  $conn = new mysqli("localhost", "root", "mySecretDBpass", "thegeekstuff");
  
  if ($conn->connect_error) {
    die("ERROR: Unable to connect: " . $conn->connect_error);
  } 

  echo 'Connected to the database.<br>';

  $result = $conn->query("SELECT name FROM employee");

  echo "Number of rows: $result->num_rows";

  $result->close();

  $conn->close();

建立查詢

[編輯 | 編輯原始碼]

建立與資料庫的連線後,您必然會想要執行資料庫查詢。要對所選資料庫建立查詢,我們使用mysql_query()函式。如果您使用SELECT查詢,則從該查詢返回的資料將傳遞給mysql_query()函式,該函式反過來將資料返回給您可以指定的變數。在以下示例中,執行了兩個查詢,第一個查詢不返回任何資料,第二個查詢返回資料。

 // A Query without any returned data
 mysql_query ("INSERT INTO `table1` ('val1', 'val2')");
 // A Query with returned data
 $query = mysql_query("SELECT * FROM `table1`");

從 SELECT 查詢中檢索資料

[編輯 | 編輯原始碼]

有許多方法可以從SELECT查詢中檢索資料。

例如,我們來看以下程式碼

 # --- Connect To Database ---
 $db = "db1";
 $link = mysql_connect("localhost", "user", "pass");
 mysql_select_db($db, $link);
 
 # --- Select Info from Database ---
 $result = mysql_query ("SELECT val1, val2 FROM tbl1");

要從$result變數中檢索資料,我們可以使用許多方法之一。但是,推薦的方法是依次遍歷表的每一行,將其儲存到一維陣列中。我們透過使用mysql_fetch_row()函式來完成此操作,將儲存結果的變數傳遞給該函式。這是一個簡單的示例

 while ($row = mysql_fetch_row($result)){
    foreach ($row as $field) {
       print "$field . ";
    }
    print "";
 }

這將簡單地以類似表格的格式輸出結果。

以下是使用此方法的另一個示例

 $counter = 0;
 while ($row = mysql_fetch_row($result)){
    $val1[$counter] = $row[0];
    $val2[$counter] = $row[1];
    $counter++;
 }
 $numRows = $counter;

上面的示例只是將結果拆分成多個一維陣列,以便於操作。

關閉資料庫連線

[編輯 | 編輯原始碼]

完成操作後,並非總是需要關閉連線,但建議這樣做。但是,如果您要開啟與另一個數據庫的新連線,則必須關閉與資料庫的連線。

要關閉與資料庫的連線,我們使用mysql_close()函式,如下所示

 mysql_close();

錯誤處理

[編輯 | 編輯原始碼]

這在除錯時很有用,即使您只想確保資料庫不會出現意外行為。建立查詢後,透過mysql_query()函式生成的任何錯誤訊息都將儲存在mysql_error()函式中。以下是一個程式碼片段示例,用於顯示錯誤訊息。但是,如果沒有錯誤訊息,則會返回一個空字串。

 print mysql_error();


華夏公益教科書