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

fetchAll() の代わりに fetch() を使用するように変更すると、1 行が返されます。しかし、データベースでIDが一意であることを確認したいだけです。

于 2013-03-01T16:28:52.337 に答える