0

我正在使用一个简单SELECT的 in PDO

$status = 'subscribed';
$statement = $pdo->prepare("select id_user from user where status = :status");
$statement->bindParam(':status', $status);
$statement->execute();
$row = $statement->fetch();
print_r($row);

为什么会返回:

Array ( [id_user] => 9 [0] => 9 )

代替:

Array ( [id_user] => 9 )
4

4 回答 4

4

这是因为 PDO 默认为PDO::FETCH_BOTH,如果您只想将字段名作为键,请使用PDO::FETCH_ASSOC

$row = $statement->fetch(PDO::FETCH_ASSOC);

或者将默认获取模式更改为PDO::FETCH_ASSOC

// for the PDO instance (which all pdostatement instances will inherit)
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

// for the PDOStatement instance
$statement->setFetchMode(PDO::FETCH_ASSOC);
于 2013-06-19T13:55:34.280 回答
1

您需要指定 $row = $statement->fetch(PDO::FETCH_ASSOC);

于 2013-06-19T13:55:56.480 回答
0

请参阅 PDO 获取的选项:

http://php.net/manual/en/pdostatement.fetch.php

它默认为PDO::FETCH_BOTH而不是PDO::FETCH_ASSOC

于 2013-06-19T13:55:41.713 回答
0

PDOStatement::fetch默认值为PDO::FETCH_BOTH。这意味着您可以通过“名称”和“索引”访问数据。如果您只想要关联版本,请使用:

$statement->fetch(PDO::FETCH_ASSOC);
于 2013-06-19T13:55:49.830 回答