使用PHP从mysql数据库获取数据哪个更好?为什么?
mysql_fetch_row()
mysql_fetch_assoc()
mysql_fetch_array()
答案 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];
$row["table_field"];
$row[0];
// or
$row["table_field"];
这里的“最重”可能是fetch_array,因为它接受一个可选参数,指定是否要将数据作为关联或数字键数组返回。
还有这一个:
$row->table_field;
就个人而言,我会根据我的需要在每个查询中使用它们,但如果你在php中使用OOP,那么最后一个选项可能是“最好的”。
答案 2 :(得分:2)
这取决于您希望如何访问行数据。
如果你不需要使用索引(例如,你通过foreach传递行),或者你不关心,使用fetch_row应该会导致稍微小的开销(虽然这是非常小的)。如果您没有首选项,请使用字段名称,因为这会使代码更容易阅读。
永远不要使用fetch_array,它基本上结合了fetch_row和fetch_assoc。使用数字和关联几乎肯定会使代码不那么清晰。 (如果你将$ result_type参数作为MYSQL_BOTH以外的其他参数提供,你可以使用fetch_array,但是你也可以使用相应的函数,因为你的代码会一样清晰,但更简洁。)
请注意,如果您确实要使用字段名称,请确保查询中没有两个具有相同名称的字段。如果这样做,则必须在查询中为该列提供别名(并在访问数组时将其用作字段名称)
答案 3 :(得分:0)
它们中没有一个本质上优于另一个 - 它们只是不同。 _assoc()
和_row()
函数实际上只是用于调用mysql_fetch_array()
的不同方式的便捷函数。
返回一个字符串数组 对应于获取的行,或 如果没有更多行,则为FALSE。该 返回数组的类型取决于方式 result_type已定义。通过使用 MYSQL_BOTH(默认),你会得到一个 具有关联和数字的数组 指数。只使用MYSQL_ASSOC 得到关联指数(如 mysql_fetch_assoc()工作),使用 MYSQL_NUM,你只获得数字索引 (因为mysql_fetch_row()有效)。