MySQL 資料庫使用SQL SELECT語句來查詢資料。
你可以透過 mysql> 指令提示視窗中在資料庫中查詢數據,或是透過PHP腳本來查詢數據。
以下為在MySQL資料庫中查詢資料通用的SELECT 語法:
SELECT column_name,column_name
FROM table_name[WHERE Clause][OFFSET M ][LIMIT N]
Welcome to the MariaDB itor. g.
Your MariaDB connection id is 2
Server version: 5.5.50-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
'helh' help。 Database changed
MariaDB [RUNOOB]> select * from runoob_tbl
-> ;+-----------+---------------+----- ----------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+--------- --+---------------+---------------+--------------- --+
| 1 | Learn PHP | John Poul | 2016-11-26 |
| 2 | LearnSQL 1. |
| 3 | JAVA Tutorial | Sanjay | 2007-05-06 |
| 4 | mysql | cakin24 | 2016-11-26 |
+-----------+---------------+------+---------------+-- ---------+-----------------+4 rows in set (0.00 sec)
MariaDB [RUNOOB]>
使用PHP腳本來取得資料
方法一:
首先,使用PHP函數mysql_query()及SQL SELECT指令來取得數據,mysql_query函數用於執行SQL指令。
然後,透過PHP函數mysql_fetch_array() 來處理查詢出的資料。
mysql_fetch_array() 函數從結果集中取得一行作為關聯數組,或數字數組,或二者兼有。 傳回從結果集取得的行產生的數組,如果沒有查詢結果,則傳回 false。
以下實例為從資料表 runoob_tbl 讀取所有記錄。
嘗試以下實例來顯示資料表 runoob_tbl 的所有記錄。
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';$conn = mysql_connect($dbhost, $dbuser, $dbdbpass); ! $conn )
{ die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT runoob_id, runoob_title. FROM runoob_tbl';
mysql_select_db('RUNOOB') ;
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());sql
}
while($row = mysql_error());sql retval, MYSQL_ASSOC))
{
echo "Tutorial ID :{$row['runoob_id']}
".
"Title: {$row['runoob_title'o]o ".
"Submission Date : {$row['submission_date']}
".
"---------------- ----------------
";
}
echo "Fetched data successfullyn";
mysql_close($conn);
?>
以上實例中,讀取的每行記錄賦值給變數$row,然後再印出每個值。
注意:記住如果你需要在字串中使用變量,請將變數置於花括號。
在上面的範例中,PHP mysql_fetch_array()函數第二個參數為MYSQL_ASSOC, 當設定為該參數,查詢結果會傳回關聯數組,你可以使用欄位名稱作為數組的索引。
方法二:
PHP提供了另外一個函數mysql_fetch_assoc(), 此函數從結果集中取得一行作為關聯數組。 傳回根據從結果集取得的行產生的關聯數組,如果沒有更多行,則傳回 false。
下面實例使用了mysql_fetch_assoc()函數來輸出資料表runoob_tbl的所有記錄:
$dbhost = 'localhost:3036'user
pass$dbdb = '
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
= 'b. runoob_title,
runoob_author, submission_date
FROM runoob_tbl';
my);
if(! $retval )
{
die('Could not get data : ' . mysql_error());
}
while($row = mysql_fetch_assoc($retval))
{
echo "Tutorial ID :{$row['runoob_id']] echo "Tutorial ID :{$row['runoob_id']] bro> " | row['runoob_title']}
".
"Author: {$row['runoob_author']}
".
"Submission Date :0. "--------------------------------
";
}
echo "Fetched data successfullyn";
mysql_close ($conn);
?>
方法三:
也可以使用常數MYSQL_NUM 作為PHP mysql_fetch_array()函數的第二個參數,傳回數字數組。
以下實例使用MYSQL_NUM參數顯示資料表runoob_tbl的所有記錄:
if(! $conn )
{ die('Could not connect: ' . mysql_error());
}
$ = 'SELECT runoo s runoob_author , submission_date
FROM runoob_tbl';
mysql_select_db('RUNOOB');
$retval = mysql_query( $sql, $conn ); mysql_error ());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM))
{
echo "Tutorial ID :{$row[0]}
".T 1遠 }
".
"Author: {$row[2]}
".
"Submission Date : {$row[3]}
".
-----------------------
";
}
echo "Fetched data successfullyn";
mysql_close($conn);
?>
以上三個實例輸出結果都一樣,輸出結果如下:
記憶體釋放
在我們執行完SELECT語句後,釋放遊標記憶體是個很好的習慣。可以透過PHP函數mysql_free_result()來實現記憶體的釋放。
以下實例示範了此函數的使用方法。此實例僅在上一個實例的基礎上加了mysql_free_result($retval);這一語句。
$dbhost = 'localhost:3036';
$dbuser = 'root';$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbdbpass); ! $conn )
die('Could not connect: ' . mysql_error());
}$sql = 'SELECT runoob_id, runoob_title. FROM runoob_tbl';
mysql_select_db('RUNOOB') ;$retval = mysql_query( $sql, $conn );
if(! $retval ){
die('Could not get data: ' . mysql_error());
}
while($row = mysql_error());
}
while($row =m. , MYSQL_NUM))
{
echo "Tutorial ID :{$row[0]}
".
"Title: {$row[1]}
".
"Title: {$row[1]}
".
}
".
"Submission Date : {$row[3]}
".
"------------------------- -------
";
}mysql_free_result($retval);echo "Fetched data successfullyn";
mysql_close($conn);
?>