MySQLi - 選擇查詢



SQL 的SELECT命令用於從MySQL資料庫中提取資料。您可以在mysql>提示符下以及在任何指令碼(如PHP)中使用此命令。

語法

以下是用於從MySQL表中提取資料的SELECT命令的通用SQL語法:

SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • 您可以使用逗號分隔一個或多個表,並使用WHERE子句包含各種條件,但WHERE子句是SELECT命令的可選部分。

  • 您可以在單個SELECT命令中提取一個或多個欄位。

  • 您可以用星號(*)代替欄位。在這種情況下,SELECT將返回所有欄位。

  • 您可以使用WHERE子句指定任何條件。

  • 您可以使用OFFSET指定SELECT將從何處開始返回記錄的偏移量。預設情況下,偏移量從零開始。

  • 您可以使用LIMIT屬性限制返回的數量。

從命令提示符提取資料

這將使用SQL SELECT命令從MySQL表tutorials_tbl中提取資料。

示例

以下示例將返回tutorials_tbl表中的所有記錄:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl 
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-21      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-21      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.01 sec)

mysql>

使用PHP指令碼提取資料

PHP使用mysqli_query()mysql_query()函式從MySQL表中選擇記錄。此函式接受兩個引數,成功時返回TRUE,失敗時返回FALSE。

語法

$mysqli→query($sql,$resultmode)

序號 引數和描述
1

$sql

必需 - 從MySQL表中選擇記錄的SQL查詢。

2

$resultmode

可選 - 常量MYSQLI_USE_RESULT或MYSQLI_STORE_RESULT,具體取決於所需的行為。預設情況下,使用MYSQLI_STORE_RESULT。

示例

嘗試以下示例從表中選擇記錄:

複製並貼上以下示例作為mysql_example.php:

<html>
   <head>
      <title>Creating MySQL Table</title>
   </head>
   <body>
      <?php
         $dbhost = 'localhost';
         $dbuser = 'root';
         $dbpass = 'root@123';
         $dbname = 'TUTORIALS';
         $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
         
         if($mysqli→connect_errno ) {
            printf("Connect failed: %s<br />", $mysqli→connect_error);
            exit();
         }
         printf('Connected successfully.<br />');
   
         $sql = "SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl";
		 
         $result = $mysqli->query($sql);
           
         if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
               printf("Id: %s, Title: %s, Author: %s, Date: %d <br />", 
                  $row["tutorial_id"], 
                  $row["tutorial_title"], 
                  $row["tutorial_author"],
                  $row["submission_date"]);               
            }
         } else {
            printf('No record found.<br />');
         }
         mysqli_free_result($result);
         $mysqli→close();
      ?>
   </body>
</html>

輸出

訪問部署在Apache Web伺服器上的mysql_example.php並驗證輸出。在執行選擇指令碼之前,我們在表中輸入了多條記錄。

Connected successfully.
Id: 1, Title: MySQL Tutorial, Author: Mahesh, Date: 2021
Id: 2, Title: HTML Tutorial, Author: Mahesh, Date: 2021
Id: 3, Title: PHP Tutorial, Author: Mahesh, Date: 2021
Id: 4, Title: Java Tutorial, Author: Mahesh, Date: 2021
Id: 5, Title: Apache Tutorial, Author: Suresh, Date: 2021
廣告