Цикл извлечения PDO снова и снова возвращает массив одинаковых имен столбцов таблицы mysql вместо данных - PullRequest
0 голосов
/ 10 февраля 2012

Я ломал голову над этим, искал повсюду, и я не могу найти ответ.Я пытаюсь извлечь данные из 2 столбцов таблицы базы данных mysql 14x9 и поместить их в массив.Звучит просто, правда?Я пытаюсь использовать PDO, потому что это более безопасно и потому что я просто хотел узнать, как это работает.Вот код:

$anId='id';
$aName='name';

$stmt = $dbh->prepare("SELECT :theid,:thename FROM a_table_in_my_database");
$stmt->bindParam(':theid', $anId);
$stmt->bindParam(':thename', $aName);
$stmt->execute();

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    print_r($row);
    echo '<br />';
}

'id' и 'name' - это имена столбцов из таблицы, которую я пытаюсь выбрать.Я ожидаю получить что-то вроде этого:

 Array ( [id] => int1 [name] => stringA )
 Array ( [id] => int2 [name] => stringB )
 Array ( [id] => int3 [name] => stringC )
 Array ( [id] => int4 [name] => stringD )
 Array ( [id] => int5 [name] => stringE )
 Array ( [id] => int6 [name] => stringF )
 Array ( [id] => int7 [name] => stringG )
 Array ( [id] => int8 [name] => stringH )
 Array ( [id] => int9 [name] => stringI )

, но вместо этого я получаю это:

 Array ( [id] => id [name] => name )
 Array ( [id] => id [name] => name )
 Array ( [id] => id [name] => name )
 Array ( [id] => id [name] => name )
 Array ( [id] => id [name] => name )
 Array ( [id] => id [name] => name )
 Array ( [id] => id [name] => name )
 Array ( [id] => id [name] => name )
 Array ( [id] => id [name] => name )

Это буквально говорит «ID» и «имя», а не значения.1010 *

Есть идеи, что происходит?

1 Ответ

1 голос
/ 10 февраля 2012

$ anId и $ aName являются строками, и поскольку вы обрабатываете их как значения bing, PDO заключает их в кавычки, поэтому ваш SQL эффективно

SELECT 'id','name' 
 FROM a_table_in_my_database

Это дает вам именно то, что вы просите,

НЕ ИСПОЛЬЗУЙТЕ ПАРАМЕТРЫ BINDA ДЛЯ ИМЯ КОЛОННЫ, ИМЕНА ТАБЛИЦЫ, ETC .... только для значений данных

...