2011-05-28 57 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