2013-06-07 5 views
0

у меня есть это:Как получить массив, индексированный по имени столбца?

$pdo = new PDO("mysql:host=$host;dbname=$databaseName;charset=utf8", $user, $pass); 
$query = "SELECT name FROM $tableName"; 
$stm = $pdo->prepare($query); 
$stm->execute(); 
$array = $stm->fetchAll(); 
$firephp->log($array); 
echo json_encode($array); 

Результат на AJAX является:

[{"name":"mike","0":"mike"},{"name":"john","0":"john"},{"name":"tito","0":"tito"}] 

Но я хочу, чтобы получить это:

{"name":[{"mike","john","tito"}]} 

Какой PDO fetch_style или то, что я должен сделать в PHP для получить строку, которую я хочу на jQuery?

Большое спасибо.

+0

Имена столбцов в 'array_keys ($ строки)'. – Barmar

+0

Не вызывайте '$ .parseJSON', когда вы делаете' dataType: 'json'', jQuery делает это автоматически. – Barmar

+0

Запрос 'information_schema' должен работать, убедитесь, что у вас есть разрешение SELECT для таблицы. – Barmar

ответ

1
$array = $stm->fetchAll(PDO::FETCH_COLUMN, 0); 
echo json_encode(array('name' => $array)); 
+0

Он работает! но первая строка имеет ")" больше, чем нужно. Благодаря ! :) – sergius

0

Вы можете получить имена столбцов с помощью PDO:

$col_count = $stmt->columnCount(); 
$col_names = array(); 
for ($col = 0; $col < $col_count; $col++) { 
    $col_names[] = $stmt->getColumnMeta($col)['name']; 
} 
+0

Спасибо, что ответили Бармаром. Я сражаюсь с этим, я еще не сделал, но я открою еще один пост с более простым и понятным вопросом. Еще раз спасибо. – sergius

+0

Справедливо, полностью меняет вопрос. :( – Barmar

+0

Я знаю Бармара, но это то, что происходит: я пытался понять некоторые вещи PDO, я очень новичок в этом, и я не профессионал ни о чем, поэтому с моими возможностями я попытался объяснить, почему я хочу , но некоторые люди меня голодают. Затем я попытался спросить по новой теме, что я хочу, потому что я продолжал читать об этой теме, и я понимаю, что я ошибался, спрашивая, чего я хочу. Даунвитинг прав. Но система не позволил мне опубликовать новую тему, сказав, что бот запретил мне публиковать новые вещи, потому что мое эффективное участие в этом месте, заявив, что я могу отменить его, изменяя postvote post ... – sergius

Смежные вопросы