对于此代码:PHP PDO的execute()返回重复结果
$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执行时,它会添加一个副本。
谢谢!
听起来很愚蠢,但你完全肯定你没有重复的键吗?你有没有尝试过使用DISTINCT关键字来掩盖这样的违规行为? – christopher 2013-03-01 16:15:21
是的,@ChrisCooney如何说。只有一种方法可以预示发生这种情况。在你的代码中写下类似...“用这个id选择,记住它,如果其他行有相同的id,则继续;” – Stepo 2013-03-01 16:22:44
实际上,主要问题是我在数据库结构上不好。在下面看到我自己的答案。 – ryantkelly 2013-03-01 16:27:08