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

Я получаю $ result как это:

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

Когда ожидаемый результат должен быть следующим:

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

Когда я запускаю тот же запрос в mySQL, он возвращает ожидаемый результат. Когда он выполняется через PHP PDO, он добавляет дубликат.

Благодаря!

Решенный путем проверки с кем-то лучше в базах данных, чем я сам …

Я глупо назвал столбцы целыми значениями.

Итак, то, что появилось как «повторяющиеся значения», было только тем, что номер столбца и имя столбца были одинаковыми!

В заключение я плохо разбираюсь в структуре базы данных.

Используйте fetchAll(PDO::FETCH_ASSOC) вместо fetchAll() .

Попробуйте проверить fetch_style и fetch_argument и установите его в нужное вам значение.

см. образец № 3: http://www.php.net/manual/en/pdostatement.fetchall.php

иногда от. на вашей версии php version / pdo появляется ошибка при использовании bindvalue. попробуйте избежать этого и вместо этого используйте образец # 3.

Вы можете изменить на использование fetch () вместо fetchAll (), который вернет одну строку. Но я просто гарантирую в базе данных, что идентификатор уникален.