PHP PDO execute()返回重复的结果

时间:2013-03-01 16:10:58

标签: php mysql pdo

对于此代码:

$title = '0';
$subTitle = '1';
$tableName = 'someString';

$stmt = $dbh->prepare("SELECT `".$title."`, `".$subTitle."` FROM `".$tableName."_data` WHERE `id` = :key");

$stmt->bindValue(':key', '127');
$stmt->execute();
$result = $stmt->fetchAll();
print_r($result);

我得到$结果:

Array
(
    [0] => Array
        (
            [0] => 91651
            [1] => 91651 - DESCRIPTION
            [2] => 91651 - DESCRIPTION
        )

)

当预期结果应为:

Array
(
    [0] => Array
        (
            [0] => 91651
            [1] => 91651 - DESCRIPTION
        )

)

当我在mySQL中运行相同的查询时,它会返回预期的结果。当它通过PHP PDO执行时,它会添加一个副本。

谢谢!

4 个答案:

答案 0 :(得分:1)

通过与数据库中的人比我更好地检查解决...

我愚蠢地将列命名为整数值。

因此,出现的“重复值”只是列号和列名相同的事实!

总之,我对数据库结构不满意。

答案 1 :(得分:1)

使用fetchAll(PDO::FETCH_ASSOC)代替fetchAll()

答案 2 :(得分:0)

尝试检查fetch_style和fetch_argument并将其设置为您需要的值。

参见样本#3: http://www.php.net/manual/en/pdostatement.fetchall.php

有时候dep。在你的php版本/ pdo版本上使用bindvalue时有一个错误。 尽量避免这种情况,而是使用样本#3。

答案 3 :(得分:-1)

您可以更改为使用fetch()而不是fetchAll(),它将返回一行。但我只是在数据库中确保id是唯一的。