PDO检索二维数组而不是一维数组

时间:2015-08-20 09:31:49

标签: php mysql arrays pdo

在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语句?提前谢谢。

1 个答案:

答案 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。