我在SELECT
中使用了一个简单的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 )
答案 0 :(得分: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);
答案 1 :(得分:1)
您需要指定
$row = $statement->fetch(PDO::FETCH_ASSOC);
答案 2 :(得分:0)
请参阅PDO fetch的选项:
http://php.net/manual/en/pdostatement.fetch.php
默认为PDO::FETCH_BOTH
而不是PDO::FETCH_ASSOC
答案 3 :(得分:0)
PDOStatement::fetch
的默认值为PDO::FETCH_BOTH
。这意味着您可以通过“名称”和“索引”访问数据。
如果您只想要关联版本,请使用:
$statement->fetch(PDO::FETCH_ASSOC);