【问题标题】:Why does array keep Duplicate Data为什么数组会保留重复数据
【发布时间】:2012-05-18 17:33:30
【问题描述】:

在使用 PHP 时,处理与数据库 (MySQL) 的连接

$result = mysql_query('select * from products');
$row = mysql_fetch_array($result);

昨天发现数组$row中有重复数据。

首先,您从数据库中选择的数据排列在索引中,例如:$row[0] = ID;,而不是您也可以找到$row['ID'] = ID.

所以这只是框架的一个功能,它以虚拟方式复制数据还是这些数据在数组中存储两次。

【问题讨论】:

    标签: php mysql arrays unit-testing


    【解决方案1】:

    the documentation for mysql_fetch_array()

    默认设置是获取包含数字和关联数组的数组。请参阅 PHP 手册进行更改。

    【讨论】:

      【解决方案2】:

      要只获取一个值集,您需要将第二个参数传递给 mysql_fetch_array。 “MYSQL_ASSOC”获取关联数组,或“MYSQL_NUM”获取普通数组。 示例:

      $row = mysql_fetch_array($result, 'MYSQL_ASSOC')
      

      这将返回:

      $row['id']
      

      Documentation

      【讨论】:

        【解决方案3】:

        $result 中的每一行都有一个索引、一个名称和一个值。您可以通过索引或名称查找行的值。

        【讨论】:

          【解决方案4】:

          from the manual:

          mysql_fetch_array — 获取结果行作为关联数组,a 数值数组,或两者兼有

          函数的原型是这样说的

          array mysql_fetch_array ( resource $result [, int $result_type = MYSQL_BOTH ] )
          

          意味着它默认返回两个数组 - 即 - 复制信息

          【讨论】:

          • 非常感谢您的回答,所以同时使用键和索引是内存泄漏,对吧?
          • 不,它只是使用更多内存 - 如果该内存将继续使用而不被释放,则会发生内存泄漏,但我认为当您的 $row 超出范围时它会被释放
          【解决方案5】:

          mysql_fetch_array 将结果行作为关联数组、数值数组或两者兼而有之。请参阅:mysql_fetch_array

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-01-15
            • 2012-11-25
            • 1970-01-01
            • 2015-09-11
            相关资源
            最近更新 更多