如果我从我的SQLite数据库的主表中获取记录,如下所示:
$database = new PDO('sqlite:test.sqlite');
$sql = "SELECT * FROM sqlite_master";
$records = $database-> query($sql);
然后它给了我每个记录中字段数量的两倍,包括索引和关联:
type:[table]
0:[table]
name:[site_comments]
1:[site_comments]
tbl_name:[site_comments]
2:[site_comments]
rootpage:[3]
3:[3]
sql:[CREATE•TABLE•site_comments(author•varchar(50),•comment•varchar(255))]
4:[CREATE•TABLE•site_comments(author•varchar(50),•comment•varchar(255))]
我记得许多年前使用PDO对象并且有fetchAll()
等。方法,这是你如何确定你是否想要关联或索引字段,或一个或另一个,等等。但这似乎是一个新的/不同版本的PDO(安装了最新版本的XAMPP的PHP):
如何告诉PDO对象我希望它只给出命名数组,例如: “type”和“name”,但不是0和1?
答案 0 :(得分:3)
PDO::query
返回PDOStatement
。使用PDOStatement::setFetchMode
设置默认提取模式,或在结果上调用fetch
时传递模式。请注意,在运行PDO::query
之后,请在结果上设置获取模式,而不是在运行查询之前在PDO对象上设置。
答案 1 :(得分:0)
你可以扩展PDO类本身,所以每次使用query()方法时,setFetchMode都是你想要的:
class PDO_Ex extends PDO {
function query($query){
$statement = parent::query($query);
$statement->setFetchMode(PDO::FETCH_ASSOC);
return $statement;
}
}