Для этого кода:
$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 (), который вернет одну строку. Но я просто гарантирую в базе данных, что идентификатор уникален.