在MySQL中我有下表:
|type_id | type_name |
--------------------------
|1 | John Doe |
|2 | Peter Griffin |
|3 | Max Wilcox |
我的PHP代码如下所示:
$stmt = $dbh->prepare ( "SELECT $column FROM $table" );
$stmt->execute ();
return $stmt->fetchAll ( PDO::FETCH_ASSOC );
这是return
声明的结果:
Array
(
[0] => Array
(
[type_name] => John Doe
)
[1] => Array
(
[type_name] => Peter Griffin
)
[2] => Array
(
[type_name] => Max Wilcox
)
)
有没有办法直接获得以下输出?
Array
(
[0] => John Doe
[1] => Peter Griffin
[2] => Max Wilcox
)
目前我正在将二维数组转换为一维数组,但效率非常低。如果我使用PDO :: FETCH_NUM,结果看起来非常相似,而不是" type_name"我总是得到" 0"。也许有人可以帮我修改我的PHP语句?提前谢谢。
答案 0 :(得分:2)
PDO检索exactly what you ask it for.
要获得一维数组,您必须使用PDO::FETCH_COLUMN
而不是PDO::FETCH_ASSOC
return $dbh->query("SELECT $column FROM $table" )->fetchAll(PDO::FETCH_COLUMN);
请注意,您的查询非常容易出现SQL注入。不应该以这种方式使用PDO。不要尝试自动化SQL。它已经完全自动化了。请使用SELECT foo,bar FROM baz WHERE id=1
之类的文字查询。没有那么多你可能会害怕的写作,并且你可能希望在真实世界代码中没有那么多的使用这个函数。
OR
使用现成的查询构建器,例如Doctrine。