mysql_query

(PHP 4, PHP 5)

mysql_query發(fā)送一條 MySQL 查詢

警告

本擴展自 PHP 5.5.0 起已廢棄,并在自 PHP 7.0.0 開始被移除。應(yīng)使用 MySQLiPDO_MySQL 擴展來替換之。參見 MySQL:選擇 API 指南來獲取更多信息。用以替代本函數(shù)的有:

說明

mysql_query(string $query, resource $link_identifier = NULL): resource

mysql_query() 向與指定的 link_identifier 關(guān)聯(lián)的服務(wù)器中的當前活動數(shù)據(jù)庫發(fā)送一條查詢(不支持多條查詢)。

參數(shù)

query

SQL 查詢語句

查詢字符串不應(yīng)以分號結(jié)束。 查詢中被嵌入的數(shù)據(jù)應(yīng)該正確地轉(zhuǎn)義。

link_identifier

MySQL 連接。如不指定連接標識,則使用由 mysql_connect() 最近打開的連接。如果沒有找到該連接,會嘗試不帶參數(shù)調(diào)用 mysql_connect() 來創(chuàng)建。如沒有找到連接或無法建立連接,則會生成 E_WARNING 級別的錯誤。

返回值

mysql_query() 僅對 SELECT,SHOW,DESCRIBE, EXPLAIN 和其他語句 語句返回一個 resource,如果查詢出現(xiàn)錯誤則返回 false

對于其它類型的 SQL 語句,比如INSERT, UPDATE, DELETE, DROP 之類, mysql_query() 在執(zhí)行成功時返回 true,出錯時返回 false

返回的結(jié)果資源應(yīng)該傳遞給 mysql_fetch_array() 和其他函數(shù)來處理結(jié)果表,取出返回的數(shù)據(jù)。

假定查詢成功,可以調(diào)用 mysql_num_rows() 來查看對應(yīng)于 SELECT 語句返回了多少行,或者調(diào)用 mysql_affected_rows() 來查看對應(yīng)于 DELETE,INSERT,REPLACE 或 UPDATE 語句影響到了多少行。

如果沒有權(quán)限訪問查詢語句中引用的表時,mysql_query() 也會返回 false。

范例

示例 #1 無效的查詢

以下查詢語法上有錯,因此 mysql_query() 失敗并返回 false。

<?php
$result 
mysql_query('SELECT * WHERE 1=1');
if (!
$result) {
    die(
'Invalid query: ' mysql_error());
}

?>

示例 #2 有效的查詢

以下查詢語法正確,所以 mysql_query() 返回了一個 resource。

<?php
// 這應(yīng)該由用戶提供,下面是一個示例
$firstname 'fred';
$lastname  'fox';

// 構(gòu)造查詢
// 這是執(zhí)行 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));

// 執(zhí)行查詢
$result mysql_query($query);

// 檢查結(jié)果
// 下面顯示了實際發(fā)送給 MySQL 的查詢,以及出現(xiàn)的錯誤。這對調(diào)試很有幫助。
if (!$result) {
    
$message  'Invalid query: ' mysql_error() . "\n";
    
$message .= 'Whole query: ' $query;
    die(
$message);
}

// 結(jié)果的使用
// 嘗試 print $result 并不會取出結(jié)果資源中的信息
// 所以必須至少使用其中一個 mysql 結(jié)果函數(shù)
// 參見 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'];
}

// 釋放關(guān)聯(lián)結(jié)果集的資源
// 在腳本結(jié)束的時候會自動進行
mysql_free_result($result);
?>

參見