Получение записи базы данных в массив в php - PullRequest
4 голосов
/ 31 мая 2011

Я хочу получить набор записей из таблицы MySQL в виде массива.

До сих пор мне удавалось получать каждую строку в виде ассоциативного массива.Но я хочу, чтобы все строки в одном массиве, потому что я должен получить доступ к этому полному объекту в jQuery, чтобы отобразить их.

Это то, что я сделал до сих пор. Это мой скрипт .php для извлечения данных

//select query    
$result = mysql_query("SELECT * FROM student",$con) or die (mysql_error());

$numRows = mysql_num_rows($result); //to iterate the for loop

//passing as an associative array

for ($count = 0; $count < $numRows; $count++){
    $row = mysql_fetch_array($result, MYSQL_ASSOC);
    echo json_encode($row);     
}

Это то, что я сейчас получаю

{"StuId":"1","fName":"Saman","lName":"Kumara","age":"14","grade":"A"}
{"StuId":"2","fName":"Marry","lName":"Vass","age":"12","grade":"B"}
{"StuId":"3","fName":"Navjoth","lName":"Bogal","age":"32","grade":"A"}
{"StuId":"4","fName":"Jassu","lName":"Singh","age":"22","grade":"E"} 

Но я хочу, чтобы этот результат был следующим.

[
    {"TEST1":45,"TEST2":23,"TEST3":"DATA1"},
    {"TEST1":46,"TEST2":24,"TEST3":"DATA2"},
    {"TEST1":47,"TEST2":25,"TEST3":"DATA3"}
]

Я прошу помощи в этом.Заранее спасибо.

1 Ответ

6 голосов
/ 31 мая 2011

Поместите все это в один массив, затем json_encode:

$json = array( );
$result = mysql_query("SELECT * FROM student",$con) or die (mysql_error());
while( $row = mysql_fetch_assoc( $result ) ) {
    $json[] = $row;
}
echo json_encode( $json );

К вашему сведению: нет необходимости считать количество результатов для цикла. mysql_fetch_ * будет внутренне хранить указатель на текущую запись и увеличивать его при каждом вызове. Это делает его идеальным кандидатом для использования в простом цикле while. Кроме того, вместо mysql_fetch_array и передачи MYSQL_ASSOC, вы можете просто использовать вместо этого mysql_fetch_assoc, метод, который я очень предпочитаю. Облегчает чтение кода (на мой взгляд, в любом случае).

...