mysql结果使用php获取比较

时间:2009-09-09 21:28:24

标签: php mysql

使用PHP从mysql数据库获取数据哪个更好?为什么?

mysql_fetch_row() 
mysql_fetch_assoc() 
mysql_fetch_array()

4 个答案:

答案 0 :(得分:4)

<强> mysql_fetch_row()能够 它返回带有数字索引/键的数组。通常它与其他两种方法的比较速度更快。

<强> mysql_fetch_assoc() 它返回列名为键的数组。它比mysql_fetch_row()略慢。

<强> mysql_fetch_array() 它返回返回基本上两个数组。一个具有基于关联的键索引,另一个具有数字索引。 mysql_fetch_array()没有指定你想要的方法( MYSQL_NUM MYSQL_ASSOC )总是返回一个双数组。与mysql_fetch_row()或mysql_fetch_assoc()相比,它的效率要低得多。您可以将结果类型设置为第二个参数。

我认为,实际上这些方法没有显着差异。

答案 1 :(得分:2)

实际上,每个人都有不同的返回数据的方法,所以问题更像是“哪一个更适合你的需求”。

mysql_fetch_row()返回如下数组:

$row[0];

mysql_fetch_assoc()

$row["table_field"];

mysql_fetch_array()

$row[0];
// or
$row["table_field"];

这里的“最重”可能是fetch_array,因为它接受一个可选参数,指定是否要将数据作为关联或数字键数组返回。

还有这一个:

mysql_fetch_object()

$row->table_field;

就个人而言,我会根据我的需要在每个查询中使用它们,但如果你在php中使用OOP,那么最后一个选项可能是“最好的”。

答案 2 :(得分:2)

这取决于您希望如何访问行数据。

  • 如果要使用数字索引,请使用fetch_row
  • 如果要使用字段名称作为索引,请使用fetch_assoc

如果你不需要使用索引(例如,你通过foreach传递行),或者你不关心,使用fetch_row应该会导致稍微小的开销(虽然这是非常小的)。如果您没有首选项,请使用字段名称,因为这会使代码更容易阅读。

永远不要使用fetch_array,它基本上结合了fetch_row和fetch_assoc。使用数字和关联几乎肯定会使代码不那么清晰。 (如果你将$ result_type参数作为MYSQL_BOTH以外的其他参数提供,你可以使用fetch_array,但是你也可以使用相应的函数,因为你的代码会一样清晰,但更简洁。)

请注意,如果您确实要使用字段名称,请确保查询中没有两个具有相同名称的字段。如果这样做,则必须在查询中为该列提供别名(并在访问数组时将其用作字段名称)

答案 3 :(得分:0)

它们中没有一个本质上优于另一个 - 它们只是不同。 _assoc()_row()函数实际上只是用于调用mysql_fetch_array()的不同方式的便捷函数。

来自the documentation

  

返回一个字符串数组   对应于获取的行,或   如果没有更多行,则为FALSE。该   返回数组的类型取决于方式   result_type已定义。通过使用   MYSQL_BOTH(默认),你会得到一个   具有关联和数字的数组   指数。只使用MYSQL_ASSOC   得到关联指数(如   mysql_fetch_assoc()工作),使用   MYSQL_NUM,你只获得数字索引   (因为mysql_fetch_row()有效)。