(PHP 4, PHP 5)
mysql_query — 發送一條 MySQL 查詢
Warning本擴展自 PHP 5.5.0 起已廢棄,并在將來會被移除。應使用 MySQLi 或 PDO_MySQL 擴展來替換之。參見 MySQL:選擇 API 指南以及相關 FAQ 以獲取更多信息。用以替代本函數的有:
mysqli_query() PDO::query()說明
resource mysql_query ( string$query
[, resource $link_identifier
= NULL
] )
mysql_query()
向與指定的 link_identifier
關聯的服務器中的當前活動數據庫發送一條查詢(不支持多條查詢)。
參數
query
SQL 查詢語句
查詢字符串不應以分號結束。 查詢中被嵌入的數據應該正確地轉義。
link_identifier
MySQL
連接。如不指定連接標識,則使用由 mysql_connect()
最近打開的連接。如果沒有找到該連接,會嘗試不帶參數調用
mysql_connect()
來創建。如沒有找到連接或無法建立連接,則會生成
E_WARNING
級別的錯誤。
返回值
mysql_query() 僅對
SELECT,SHOW,DESCRIBE, EXPLAIN 和其他語句
語句返回一個 resource,如果查詢出現錯誤則返回 FALSE
。
對于其它類型的 SQL
語句,比如INSERT, UPDATE, DELETE, DROP 之類, mysql_query()
在執行成功時返回 TRUE
,出錯時返回 FALSE
。
返回的結果資源應該傳遞給 mysql_fetch_array() 和其他函數來處理結果表,取出返回的數據。
假定查詢成功,可以調用 mysql_num_rows() 來查看對應于 SELECT 語句返回了多少行,或者調用 mysql_affected_rows() 來查看對應于 DELETE,INSERT,REPLACE 或 UPDATE 語句影響到了多少行。
如果沒有權限訪問查詢語句中引用的表時,mysql_query()
也會返回 FALSE
。
范例
Example #1 無效的查詢
以下查詢語法上有錯,因此
mysql_query()
失敗并返回 FALSE
。
<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
die('Invalid query: ' . mysql_error());
}
?>
Example #2 有效的查詢
以下查詢語法正確,所以 mysql_query() 返回了一個 resource。
<?php
// 這應該由用戶提供,下面是一個示例
$firstname = 'fred';
$lastname = 'fox';
// 構造查詢
// 這是執行 SQL 最好的方式
// 更多例子參見 mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// 執行查詢
$result = mysql_query($query);
// 檢查結果
// 下面顯示了實際發送給 MySQL 的查詢,以及出現的錯誤。這對調試很有幫助。
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "n";
$message .= 'Whole query: ' . $query;
die($message);
}
// 結果的使用
// 嘗試 print $result 并不會取出結果資源中的信息
// 所以必須至少使用其中一個 mysql 結果函數
// 參見 mysql_result(), mysql_fetch_array(), mysql_fetch_row() 等。
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
// 釋放關聯結果集的資源
// 在腳本結束的時候會自動進行
mysql_free_result($result);
?>
參見
mysql_connect() - 打開一個到 MySQL 服務器的連接 mysql_error() - 返回上一個 MySQL 操作產生的文本錯誤信息 mysql_real_escape_string() - 轉義 SQL 語句中使用的字符串中的特殊字符,并考慮到連接的當前字符集 mysql_result() - 取得結果數據 mysql_fetch_assoc() - 從結果集中取得一行作為關聯數組 mysql_unbuffered_query() - 向 MySQL 發送一條 SQL 查詢,并不獲取和緩存結果的行