天天看點

MySQL 查詢資料MySQL 查詢資料

MySQL 查詢資料

MySQL 資料庫使用SQL SELECT語句來查詢資料。

你可以通過 mysql> 指令提示視窗中在資料庫中查詢資料,或者通過PHP腳本來查詢資料。

文法

以下為在MySQL資料庫中查詢資料通用的 SELECT 文法:

SELECT column_name,column_name
FROM table_name[WHERE Clause][LIMIT N][ OFFSET M]      
  • 查詢語句中你可以使用一個或者多個表,表之間使用逗号(,)分割,并使用WHERE語句來設定查詢條件。
  • SELECT 指令可以讀取一條或者多條記錄。
  • 你可以使用星号(*)來代替其他字段,SELECT語句會傳回表的所有字段資料
  • 你可以使用 WHERE 語句來包含任何條件。
  • 你可以使用 LIMIT 屬性來設定傳回的記錄數。
  • 你可以通過OFFSET指定SELECT語句開始查詢的資料偏移量。預設情況下偏移量為0。

通過指令提示符擷取資料

以下執行個體我們将通過 SQL SELECT 指令來擷取 MySQL 資料表 runoob_tbl 的資料:

執行個體

以下執行個體将傳回資料表 runoob_tbl 的所有記錄:

讀取資料表:

select * from runoob_tbl;

輸出結果:

MySQL 查詢資料MySQL 查詢資料

使用PHP腳本來擷取資料

使用 PHP 函數的 mysqli_query() 及 SQL SELECT 指令來擷取資料。

該函數用于執行 SQL 指令,然後通過 PHP 函數 mysqli_fetch_array() 來使用或輸出所有查詢的資料。

mysqli_fetch_array() 函數從結果集中取得一行作為關聯數組,或數字數組,或二者兼有 傳回根據從結果集取得的行生成的數組,如果沒有更多行則傳回 false。

以下執行個體為從資料表 runoob_tbl 中讀取所有記錄。

嘗試以下執行個體來顯示資料表 runoob_tbl 的所有記錄。

使用 mysqli_fetch_array MYSQL_ASSOC 參數擷取資料:

<?php

                     $dbhost = 'localhost:3306';          // mysql伺服器主機位址

                     $dbuser = 'root';                          // mysql使用者名

                     $dbpass = '123456';                    // mysql使用者名密碼

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if(! $conn )

{

                          die('連接配接失敗: ' .mysqli_error($conn));

}

// 設定編碼,防止中文亂碼

mysqli_query($conn , "set names utf8");

$sql = 'SELECT runoob_id, runoob_title,

           runoob_author, submission_date

           FROM runoob_tbl';

mysqli_select_db( $conn, 'RUNOOB' );

$retval = mysqli_query( $conn, $sql );

if(! $retval )

      die('無法讀取資料: ' . mysqli_error($conn));

echo '<h2>菜鳥教程 mysqli_fetch_array 測試<h2>';

echo '<table border="1"><tr><td>教程 ID</td><td>标題</td><td>作者</td><td>送出日期</td></tr>';

while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))

           echo "<tr><td> {$row['runoob_id']}</td> ".       

                    "<td>{$row['runoob_title']} </td> ".       

                    "<td>{$row['runoob_author']} </td> ".       

                    "<td>{$row['submission_date']} </td> ".       

                     "</tr>";}echo '</table>';mysqli_close($conn);?>

echo '</table>';

mysqli_close($conn);

?>

輸出結果如下所示:

MySQL 查詢資料MySQL 查詢資料

以上執行個體中,讀取的每行記錄指派給變量 $row,然後再列印出每個值。

注意:記住如果你需要在字元串中使用變量,請将變量置于花括号。

在上面的例子中,PHP mysqli_fetch_array() 函數第二個參數為 MYSQL_ASSOC, 設定該參數查詢結果傳回關聯數組,你可以使用字段名稱來作為數組的索引。

PHP 提供了另外一個函數 mysqli_fetch_assoc(), 該函數從結果集中取得一行作為關聯數組。 傳回根據從結果集取得的行生成的關聯數組,如果沒有更多行,則傳回 false。

嘗試以下執行個體,該執行個體使用了 mysqli_fetch_assoc() 函數來輸出資料表 runoob_tbl 的所有記錄:

使用 mysqli_fetch_assoc 擷取資料:

$dbhost = 'localhost:3306';  // mysql伺服器主機位址

$dbuser = 'root';                  // mysql使用者名

$dbpass = '123456';            // mysql使用者名密碼

die('連接配接失敗: ' . mysqli_error($conn));

            runoob_author, submission_date

            FROM runoob_tbl';

mysqli_select_db( $conn, 'RUNOOB' );

  die('無法讀取資料: ' . mysqli_error($conn));

echo '<h2>菜鳥教程 mysqli_fetch_assoc 測試<h2>';

while($row = mysqli_fetch_assoc($retval))

echo "<tr><td> {$row['runoob_id']}</td> ".       

         "<td>{$row['runoob_title']} </td> ".      

         "<td>{$row['runoob_author']} </td> ".    

         "<td>{$row['submission_date']} </td> ".     

         "</tr>";

MySQL 查詢資料MySQL 查詢資料

你也可以使用常量 MYSQL_NUM 作為 PHP mysqli_fetch_array() 函數的第二個參數,傳回數字數組。

以下執行個體使用 MYSQL_NUM 參數顯示資料表 runoob_tbl 的所有記錄:

使用 mysqli_fetch_array MYSQL_NUM 參數擷取資料:

           $dbhost = 'localhost:3306';  // mysql伺服器主機位址

           $dbuser = 'root';                  // mysql使用者名

          $dbpass = '123456';            // mysql使用者名密碼

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);if(! $conn )

mysqli_query($conn , "set names utf8");

              $sql = 'SELECT runoob_id, runoob_title,

                         runoob_author, submission_date

                        FROM runoob_tbl';

die('無法讀取資料: ' . mysqli_error($conn));

while($row = mysqli_fetch_array($retval, MYSQL_NUM))

 echo "<tr><td> {$row[0]}</td> ".       

"<td>{$row[1]} </td> ".       

"<td>{$row[2]} </td> ".      

  "<td>{$row[3]} </td> ".        

"</tr>";

MySQL 查詢資料MySQL 查詢資料

以上三個執行個體輸出結果都一樣。

記憶體釋放

在我們執行完 SELECT 語句後,釋放遊标記憶體是一個很好的習慣。

可以通過 PHP 函數 mysqli_free_result() 來實作記憶體的釋放。

以下執行個體示範了該函數的使用方法。

嘗試以下執行個體:

使用 mysqli_free_result 釋放記憶體:

$dbhost = 'localhost:3306';   // mysql伺服器主機位址

$dbuser = 'root';                   // mysql使用者名

$dbpass = '123456';             // mysql使用者名密碼

$sql = 'SELECT runoob_id, runoob_title,

            FROM runoob_tbl';

 die('無法讀取資料: ' . mysqli_error($conn));

"<td>{$row[2]} </td> ".        

"<td>{$row[3]} </td> ".       

"</tr>";}

echo '</table>';// 釋放記憶體

mysqli_free_result($retval);

MySQL 查詢資料MySQL 查詢資料