SQL SELECT 命令是從 MySQL 資料庫檢索資料的核心指令,既可在 mysql> 命令列提示符下直接執行,也能嵌入 PHP 等腳本語言中使用。本文將系統講解 SELECT 的語法細節、命令列操作範例,以及 PHP 程式碼實作要點。
通用的 SELECT 語法結構如下:
SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE Clause] [OFFSET M] [LIMIT N]
* 代表所有欄位。以下示範在終端機中登入 MySQL 並查詢所有記錄:
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 透過 mysql_query() 執行 SQL,再配合 mysql_fetch_array() 或 mysql_fetch_assoc() 逐行讀取。注意:mysql_* 函式已棄用,實務上建議改用 PDO 或 MySQLi,此處僅作教學示範。
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl';
mysql_select_db('TUTORIALS');
$retval = mysql_query($sql, $conn);
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo "Tutorial ID :{$row['tutorial_id']} <br> ";
echo "Title: {$row['tutorial_title']} <br> ";
echo "Author: {$row['tutorial_author']} <br> ";
echo "Submission Date : {$row['submission_date']} <br> ";
echo "--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
<?php
// 連線設定同上...
$retval = mysql_query($sql, $conn);
while($row = mysql_fetch_assoc($retval)) {
echo "Tutorial ID :{$row['tutorial_id']} <br> ";
echo "Title: {$row['tutorial_title']} <br> ";
echo "Author: {$row['tutorial_author']} <br> ";
echo "Submission Date : {$row['submission_date']} <br> ";
echo "--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
<?php
// 連線設定同上...
$retval = mysql_query($sql, $conn);
while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
echo "Tutorial ID :{$row[0]} <br> ";
echo "Title: {$row[1]} <br> ";
echo "Author: {$row[2]} <br> ";
echo "Submission Date : {$row[3]} <br> ";
echo "--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
以上三種寫法輸出結果相同,開發者可依習慣選擇。實際專案中,務必在查詢結束後呼叫 mysql_free_result() 釋放記憶體:
// ... 查詢迴圈結束後 mysql_free_result($retval); echo "Fetched data successfully\n"; mysql_close($conn);
掌握 SELECT 基礎後,即可撰寫任意複雜的查詢邏輯,程式架構保持不變。