mysql_query

(PHP 3, PHP 4, PHP 5)

mysql_query -- 傳送一條 MySQL 查詢

說明

resource mysql_query ( string query [, resource link_identifier] )

mysql_query() 向與特殊的連線標識符關聯的伺服器中的現用的活動資料庫傳送一條查詢。若果沒有指定 link_identifier,則使用上一個開啟的連線。若果沒有開啟的連線,本函數會嘗試無參數呼叫 mysql_connect() 函數來建立一個連線並使用之。查詢結果會被暫存。

注: 查詢字串不應以分號結束。

mysql_query() 僅對 SELECT,SHOW,EXPLAIN 或 DESCRIBE 語句返回一個資源標識符,若果查詢執行不正確則返回 FALSE。對於其它類型的 SQL 語句,mysql_query() 在執行成功時返回 TRUE,出錯時返回 FALSE。非 FALSE 的返回值意味著查詢是合法的並能夠被伺服器執行。這並不說明任何有關影響到的或返回的行數。 很有可能一條查詢執行成功了但並未影響到或並未返回任何行。

以下查詢語法上有錯,因此 mysql_query() 失敗並返回 FALSE

例子 1. mysql_query() 例子

<php
$result = mysql_query("SELECT * WHERE 1=1")
    or die("Invalid query: " . mysql_error());
?>

以下查詢當 my_col 並不是表 my_tbl 中的列時語義上有錯,因此 mysql_query() 失敗並返回 FALSE

例子 2. mysql_query()

<?php
$result 
mysql_query("SELECT my_col FROM my_tbl")
    or die(
"Invalid query: " mysql_error());
?>

若果沒有權限訪問查詢語句中引用的表時,mysql_query() 也會返回 FALSE

假定查詢成功,可以呼叫 mysql_num_rows() 來檢視對應於 SELECT 語句返回了多少行,或是呼叫 mysql_affected_rows() 來檢視對應於 DELETE,INSERT,REPLACE 或 UPDATE 語句影響到了多少行。

僅對 SELECT,SHOW,DESCRIBE 或 EXPLAIN 語句 mysql_query() 才會返回一個新的結果標識符,可以將其傳遞給 mysql_fetch_array() 和其它處理結果表的函數。處理完結果集後可以通過呼叫 mysql_free_result() 來釋放與之關聯的資源,儘管腳本執行完畢後會自動釋放記憶體。

參見 mysql_num_rows()mysql_affected_rows()mysql_unbuffered_query()mysql_free_result()mysql_fetch_array()mysql_fetch_row()mysql_fetch_assoc()mysql_result()mysql_select_db()mysql_connect()