【问题标题】:2 identical elements returned in array, after mysql query, why?mysql查询后,数组中返回了2个相同的元素,为什么?
【发布时间】:2013-06-16 08:40:40
【问题描述】:

我已经像这样使用 PDO 进行了 mysql 查询

$timestamp_query = "SELECT timestamp FROM change_me;";

foreach ($conn->query($timestamp_query) as $times ) {
    print_r($times); 
    echo "<br>";
 }

但这给了我一组这样的数组

Array ( [timestamp] => 2013-05-24 17:55:04 [0] => 2013-05-24 17:55:04 )
Array ( [timestamp] => 2013-05-24 18:00:05 [0] => 2013-05-24 18:00:05 )
Array ( [timestamp] => 2013-05-24 18:05:04 [0] => 2013-05-24 18:05:04 ) 

为什么这会在每个数组中给我 2 个相同的元素,而不是只有一个?

【问题讨论】:

  • 我远非 PDO 专家,但我认为$times 是一个,您需要关注$times[0]$times['timestamp'] 才能获得价值。
  • 由于您的$conn-&gt;query($timestamp_query) 是一个关联数组,您可以使用设置键或数字键访问返回的值。我相信这就是您所看到的,print_r() 向您展示了两者。

标签: php mysql arrays pdo


【解决方案1】:

它向您返回一个关联数组,以便您可以通过字段名称或索引来引用结果。

例如$times['timestamp']$times[0]

【讨论】:

    【解决方案2】:

    您需要将获取模式从 PDO::FETCH_BOTH 更改为 PDO::FETCH_ASSOC

    foreach ($conn->query($timestamp_query, PDO::FETCH_ASSOC) as $times ) 
    

    这将对其进行更改,使其仅将数据作为关联数组返回。

    或者,如果您只想要一个索引数组,您可以使用 PDO::FETCH_ARRAY 或对于对象使用 PDO::FETCH_OBJECT。

    更多信息可以找到here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 2021-09-20
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多