为什么我的数组返回重复信息?

时间:2018-08-14 21:30:59

标签: php pdo

我对PHP的PDO还是有些陌生,因此我不明白为什么它做的有些奇怪。我有以下代码(按预期工作)。

$db = new Database;

$query = $db->prepare( 'SELECT * FROM users WHERE id = :value LIMIT 1' );

$query->bindParam( ':value', $value );

$query->execute();

$result = $query->fetch();

但是,我很好奇为什么它返回一个看似重复的响应。这是返回的示例:

/file.php:X:
array (size=X)
  'id' => string '2' (length=1)
  0 => string '2' (length=1)
  'fullname' => string '' (length=0)
  1 => string '' (length=0)
  'email' => string 'bob@example.com' (length=15)
  2 => string 'bob@example.com' (length=15)
...

我的数据库中有IDfullnameemail等的列,等等,但是为什么它还会返回键值对两次,而第二个默认为基于int的密钥?

1 个答案:

答案 0 :(得分:2)

您没有指定所需的提取样式,并且默认情况下将其设置为PDO::FETCH_BOTH,这就是为什么要获取重复数据的原因。因此,您需要指定返回数组的所需样式(按数字或字符串索引,又称关联数组或对象...),您需要更改此行:

$result = $query->fetch();

在其中获取关联数组:

$result = $query->fetch(PDO::FETCH_ASSOC);

或者这可以获取以0开头的数字索引的经典数组:

$result = $query->fetch(PDO::FETCH_NUM);

还有更多的提取样式,有关更多信息,请参见php手册pdo fetch method

希望我进一步推动了你。