使用PDO获取数据并使用其列名仅获取一次数据

时间:2015-02-27 12:06:40

标签: php mysql pdo

当使用PDO从mysql数据库中获取值时,我得到了一些冗余信息,我想知道为什么。下面的php函数返回值,因为我希望它们被返回。但是如果我返回结果数组,我会得到双值。

public function getNames($userid) {
        try {
            $dbh = new PDO('mysql:host=localhost;dbname='.parent::Database(), parent::User(), parent::Password());
        } catch (PDOException $e) {
            var_dump("error: $e");
        }

        $sql = "SELECT ID, Name FROM cars WHERE userid =:UID and type=2";
        $sth = $dbh->prepare($sql);
        $sth->bindParam(':UID', $userid);
        $sth->execute();

        $result = $sth->fetchAll(); //fetches all results where there's a match

        $result2 = array();
        foreach($result as $res)
            $result2[] = array("ID"=>$res["ID"], "Name"=>$res["Name"]);

        return $result2;
    }

$结果返回:

Array
(
    [0] => Array
        (
            [ID] => 2
            [0] => 2
            [Name] => Volvo
            [1] => Volvo
        )

    [1] => Array
        (
            [ID] => 8
            [0] => 8
            [Name] => Ford
            [1] => Ford
        )

)

$ Result2返回:

Array
(
    [0] => Array
        (
            [ID] => 2
            [Name] => Volvo
        )

    [1] => Array
        (
            [ID] => 8
            [Name] => Ford
        )

)

为什么$结果表现得像这样?就像它多次获取我的数据一样。我使用的代码错了吗?如果可能的话,我想使用$ result2的结果而不指定每个返回数组 - 以防表格在某个时刻被编辑。可能?

1 个答案:

答案 0 :(得分:0)

您将结果作为关联数组和索引数组。

要仅获取关联数组,可以使用:

$result = $sth->fetchAll(PDO::FETCH_ASSOC);