跳到主要内容

请问mysql_fetch_array 和 mysql_fetch_object 有什么区别?

参考答案:

mysql_fetch_arraymysql_fetch_object 是 PHP 的 MySQL 扩展中用于从结果集中获取数据的两个函数。然而,它们的工作方式和返回的数据类型是不同的。

  1. mysql_fetch_array():

    • mysql_fetch_array() 函数返回一个关联数组,其中键是列名,值是相应的字段值。如果关联索引也被请求(通过传递 MYSQL_ASSOC | MYSQL_NUM 作为第二个参数),则该函数将返回一个同时包含关联和数字索引的数组。
    • 示例:
    	php`$result = mysql_query("SELECT * FROM table_name");
    	while ($row = mysql_fetch_array($result)) {
    	    echo $row["column_name"] . "<br>";
    	}`
    
  2. mysql_fetch_object():

    • mysql_fetch_object() 函数返回一个对象,其中对象的属性对应于列名,属性的值对应于相应的字段值。
    • 示例:
    	php`$result = mysql_query("SELECT * FROM table_name");
    	while ($obj = mysql_fetch_object($result)) {
    	    echo $obj->column_name . "<br>";
    	}`
    

以下是两者之间的主要区别:

  • 返回类型mysql_fetch_array() 返回一个数组,而 mysql_fetch_object() 返回一个对象。
  • 访问方式:在 mysql_fetch_array() 返回的数组中,你可以使用键(列名)或索引(从 0 开始的数字)来访问值。而在 mysql_fetch_object() 返回的对象中,你只能使用属性(列名)来访问值。
  • 性能:对于大型数据集,mysql_fetch_object() 可能会稍微快一些,因为它不需要创建和维护一个关联数组。但是,这种差异通常可以忽略不计。

请注意,这些函数(以及整个 mysql_* 扩展)在 PHP 7.0 中已被弃用,并在 PHP 8.0 中被移除。现在推荐使用 MySQLi 或 PDO_MySQL 扩展来与 MySQL 数据库进行交互。这些新的扩展提供了更好的性能、安全性和易用性。