3

对于此代码:

$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);

我得到 $result 如下:

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

)

当预期的结果应该是这样的:

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

)

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

谢谢!

4

4 回答 4

2

使用fetchAll(PDO::FETCH_ASSOC)而不是fetchAll().

于 2016-11-15T02:50:30.863 回答
1

通过与比我自己更擅长数据库的人核对来解决...

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

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

总之,我不擅长数据库结构。

于 2013-03-01T16:25:47.633 回答
0

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

参见示例 #3: http ://www.php.net/manual/en/pdostatement.fetchall.php

有时省。在您的 php 版本/pdo 版本上,使用 bindvalue 时存在错误。尽量避免这种情况并改用示例 #3。

于 2013-03-01T16:32:40.387 回答
-1

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

于 2013-03-01T16:28:52.337 回答