(PHP 4, PHP 5)
mysql_query — 發(fā)送一條 MySQL 查詢(xún)
本擴(kuò)展自 PHP 5.5.0 起已廢棄,并在自 PHP 7.0.0 開(kāi)始被移除。應(yīng)使用 MySQLi 或 PDO_MySQL 擴(kuò)展來(lái)替換之。參見(jiàn) MySQL:選擇 API 指南來(lái)獲取更多信息。用以替代本函數(shù)的有:
$query
, resource $link_identifier
= NULL): resource
mysql_query()
向與指定的 link_identifier
關(guān)聯(lián)的服務(wù)器中的當(dāng)前活動(dòng)數(shù)據(jù)庫(kù)發(fā)送一條查詢(xún)(不支持多條查詢(xún))。
query
SQL 查詢(xún)語(yǔ)句
查詢(xún)字符串不應(yīng)以分號(hào)結(jié)束。 查詢(xún)中被嵌入的數(shù)據(jù)應(yīng)該正確地轉(zhuǎn)義。
link_identifier
MySQL
連接。如不指定連接標(biāo)識(shí),則使用由 mysql_connect()
最近打開(kāi)的連接。如果沒(méi)有找到該連接,會(huì)嘗試不帶參數(shù)調(diào)用
mysql_connect()
來(lái)創(chuàng)建。如沒(méi)有找到連接或無(wú)法建立連接,則會(huì)生成
E_WARNING
級(jí)別的錯(cuò)誤。
mysql_query() 僅對(duì)
SELECT,SHOW,DESCRIBE, EXPLAIN 和其他語(yǔ)句
語(yǔ)句返回一個(gè) resource,如果查詢(xún)出現(xiàn)錯(cuò)誤則返回 false
。
對(duì)于其它類(lèi)型的 SQL
語(yǔ)句,比如INSERT, UPDATE, DELETE, DROP 之類(lèi), mysql_query()
在執(zhí)行成功時(shí)返回 true
,出錯(cuò)時(shí)返回 false
。
返回的結(jié)果資源應(yīng)該傳遞給 mysql_fetch_array() 和其他函數(shù)來(lái)處理結(jié)果表,取出返回的數(shù)據(jù)。
假定查詢(xún)成功,可以調(diào)用 mysql_num_rows() 來(lái)查看對(duì)應(yīng)于 SELECT 語(yǔ)句返回了多少行,或者調(diào)用 mysql_affected_rows() 來(lái)查看對(duì)應(yīng)于 DELETE,INSERT,REPLACE 或 UPDATE 語(yǔ)句影響到了多少行。
如果沒(méi)有權(quán)限訪(fǎng)問(wèn)查詢(xún)語(yǔ)句中引用的表時(shí),mysql_query()
也會(huì)返回 false
。
示例 #1 無(wú)效的查詢(xún)
以下查詢(xún)語(yǔ)法上有錯(cuò),因此
mysql_query()
失敗并返回 false
。
<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
die('Invalid query: ' . mysql_error());
}
?>
示例 #2 有效的查詢(xún)
以下查詢(xún)語(yǔ)法正確,所以 mysql_query() 返回了一個(gè) resource。
<?php
// 這應(yīng)該由用戶(hù)提供,下面是一個(gè)示例
$firstname = 'fred';
$lastname = 'fox';
// 構(gòu)造查詢(xún)
// 這是執(zhí)行 SQL 最好的方式
// 更多例子參見(jiàn) 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í)行查詢(xún)
$result = mysql_query($query);
// 檢查結(jié)果
// 下面顯示了實(shí)際發(fā)送給 MySQL 的查詢(xún),以及出現(xiàn)的錯(cuò)誤。這對(duì)調(diào)試很有幫助。
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
// 結(jié)果的使用
// 嘗試 print $result 并不會(huì)取出結(jié)果資源中的信息
// 所以必須至少使用其中一個(gè) mysql 結(jié)果函數(shù)
// 參見(jiàn) 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é)束的時(shí)候會(huì)自動(dòng)進(jìn)行
mysql_free_result($result);
?>