2012-06-04 2 views
2

У меня есть следующий код:Как разобрать mysql_fetch_row в объект JSON

<?php 
include 'db.php'; 
$con = mysql_connect($host,$user,$pass); 
$dbs = mysql_select_db($databaseName, $con); 

$tableName = "tbl_title"; 
$result = mysql_query("SELECT id, fld_title FROM $tableName"); 

$data = array(); 
while ($row = mysql_fetch_row($result)) 
{ 
    //$data[] = $row; 
    //$data['item'][] = $row; 
    //$data['item'][] = $row['id'].value; 
    $id = $row['id']; 
    $fld_title = $row['fld_title']; 
    $data = array("id" => $id, "fld_title" => $fld_title); 

    //echo $row['id'] . " " . $row['fld_title']; 
      //echo '<option value="'.$row->id.'">'.$row->fld_title.'</option>'; 
} 
echo json_encode($data); 
    // echo $row[0] . " " . $row[1]; 
?> 

Я пытаюсь возвращать результаты в виде форматированного образом, однако, несмотря на то, я получаю результаты запроса, $ Id и $ fld_title не получает значения. Что мне не хватает?

ответ

5

Там нет необходимости ссылаться на каждый столбец. $row - массив уже. Я изменил использование mysql_fetch_assoc, потому что он дает именованные столбцы.

$data = array(); 
while ($row = mysql_fetch_assoc($result)) 
{ 
    $data[] = $row; 
} 
echo json_encode($data); 
+0

Ах, ха! Это именно то, чего мне не хватало ... – NinjaCat

0

Вы, вероятно, хотите, чтобы это в цикле:

$data[] = array("id" => $id, "fld_title" => $fld_title); 

вместо:

$data = array("id" => $id, "fld_title" => $fld_title); 

Так что один массив для каждой строки присоединяемой на массив выходных данных, или вы будете выводить только последний пункт.

4
$data = array(); 
while ($row = mysql_fetch_row($result)) 
{ 
    $data[] = array("id" => $row['id'] ,"fld_title" => $row['fld_title']); 
} 
var_dump(json_encode($data)); 

Обновлено
Получить его идентификатор: (я предполагаю, что это уникальное)

$data = array(); 
    while ($row = mysql_fetch_array($result)) 
    { 
     $data[$row['id']] = array("id" => $row['id'] ,"fld_title" => $row['fld_title']); 
    } 
    var_dump(json_encode($data)); 
+0

лол выборки строки дает только численный массив не ассоциативный массив –

+0

Еще не так 'mysql_fetch_row' будет возвращать числовой ключ массив не ассоциативный. –

+0

@VIPINJAIN только что обновил его. – Oyeme

-1

почему выборка строки, когда вы можете получить associative array форму результат сразу, так что вам не придется делать дополнительную кодировку для форматирования данных.

USE

mysql_ fetch_ assoc функция, чтобы получить эти значения.

и еще одна вещь: строка fetchin даст вам только числовые ключи, а не ассоциативные ключи.

и теперь ENJOY;)

+3

Удалено «LOL», потому что это на самом деле довольно грубо. –

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