对于此代码:
$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执行时,它会添加一个副本。
谢谢!
答案 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是唯一的。