在数组中返回2个相同的元素,经过mysql查询,为什么?

sam*_*sam 2 php mysql arrays pdo

我用这样的PDO做了一个mysql查询

$timestamp_query = "SELECT timestamp FROM change_me;";

foreach ($conn->query($timestamp_query) as $times ) {
    print_r($times); 
    echo "<br>";
 }
Run Code Online (Sandbox Code Playgroud)

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

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 ) 
Run Code Online (Sandbox Code Playgroud)

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

j08*_*691 5

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

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


Ora*_*ill 5

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

foreach ($conn->query($timestamp_query, PDO::FETCH_ASSOC) as $times ) 
Run Code Online (Sandbox Code Playgroud)

这将更改它,以便它仅将数据作为关联数组返回.

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

更多信息可以在这里找到