2011-05-28 54 views
0

我不確定在數據庫上運行查詢時是否應該使用mysql_result()mysql_query()。在下面的情況下它有什麼不同嗎?mysql_query()和mysql_result()有什麼區別?

$usertable = 'tableName'; 
$colName = 'columnA'; 
$xlookup = 'columnB'; 

// Connect to Server 
$con = mysql_connect($hostname, $username, $password); 

// select db 
mysql_select_db($dbname); 

// run query 
$result = mysql_query("SELECT $colName FROM $usertable where $xlookup = 5"); 

// pass results to webpage 
$a = 51; 
$x = array($a, $a, mysql_result($result)); 
echo json_encode($x); 

此刻,不管我用這個與否並不有所作爲既不工作,但我以爲一個錯誤會停止運行的代碼。


我試圖使用下面的代碼來識別任何錯誤,但不知道它是否正確。

// This shows the actual query sent to MySQL, and the error. Useful for debugging. 
if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die("<html><script language='JavaScript'>alert('Unable to run query'), $message</script></html>"); 
} 
+0

是的,該檢查是確定的。而且你經常會看到一個簡短的符號。像'$ result = mysql_query('....')或死('....'。mysql_error());' – GolezTrol 2011-05-28 21:23:54

+0

所以如果$ result只是一個值(比如'10'),我可以嗎回報那個?或者我需要對$ result做些什麼?對不起,我還沒有看到區別。 – djq 2011-05-28 21:26:43

+1

即使查詢只返回一個值,它仍會在資源對象中返回該值,並且仍然需要mysql_result或其他函數來獲取該值。就像你需要一個單獨的函數來連接數據庫一樣。沒有一個大的mysql_query_single_value函數可以讓你一步完成這些工作。雖然你可以自己寫(或者谷歌,有人可能已經寫過)。 – GolezTrol 2011-05-28 21:31:54

回答

4

mysql_query執行查詢並返回結果集。

mysql_result返回結果集中的行以供您使用。

查找一些例子here

mysql_result具有能夠返回特定字段的區別,但是正如其他海報提到的比其他獲取函數慢。

2

mysql_query和mysql_result是兩個完全不同的函數,它們完全不同的東西。

mysql_query向數據庫發送SQL查詢。

mysql_result根據查詢結果根據其行(以及可選的列號,默認爲零)號碼獲取值。

這就是說,如果你打算爲每一行使用多個數據,你應該使用mysql_fetch_row。

2

它們是不同的功能。 mysql_query執行查詢(字符串)並返回可用於從中檢索信息的資源對象。 mysql_result是幫助你從資源獲取數據的輔助函數之一。所以你需要兩個。

或者實際上你沒有。一旦你使用了mysql_query,你可以使用其他函數,例如mysql_fetch_row來檢索數據。大多數這些函數比mysql_result執行更好,效率更高。

+0

「這些函數中的大多數函數比mysql_result執行得更好,效率更高。」你可以支持這種說法嗎?我已經閱讀過幾次,但從未見過任何基準或實際原因。 – 2012-01-25 14:42:28

+0

@DavidMurdoch From PHP.NET「在處理大型結果集時,應該考慮使用一個獲取整行的函數(在下面指定)。由於這些函數在一次函數調用中返回多個單元格的內容,比mysql_result()快得多。另外,請注意,指定字段參數的數值偏移比指定字段名或tablename.fieldname參數快得多。「 – GolezTrol 2012-01-25 15:31:56

+0

謝謝,所以可能是這樣的,當只需要從第1行開始的1列'$ val = mysql_result($ resource,0,0);'會比$ row ='mysql_fetch_row($ resource)稍快。 $ val = $ row [0];'。你怎麼看? – 2012-01-25 16:10:00