Конвертировать набор записей MySQL в строку JSON в PHP
Есть ли в PHP функция или класс, чтобы я мог передать набор записей MySQL и получить возвращенную строку JSON, которую можно передать обратно функции JavaScript в запросе Ajax?
что-то вроде этого:
function recordSetToJson($recordset) {
while($rs1 = mysql_fetch_row($recordset)) {
for($count = 0; $count < count($rs1); $count++) {
// read and add field to JSON
}
$count++;
}
return $jasonstring
}
2 ответа
Это должно работать:
function recordSetToJson($mysql_result) {
$rs = array();
while($rs[] = mysql_fetch_assoc($mysql_result)) {
// you don´t really need to do anything here.
}
return json_encode($rs);
}
Если вам нужно манипулировать результирующим набором, вы можете использовать следующую более сложную версию, которая позволяет вам добавить функцию обратного вызова, которая будет вызываться для каждой записи и должна возвращать эту запись, уже обработанную:
function recordSetToJson($mysql_result, $processing_function = null) {
$rs = array();
while($record = mysql_fetch_assoc($mysql_result)) {
if(is_callable($processing_function)){
// callback function received. Pass the record through it.
$processed = $processing_function($record);
// if null was returned, skip that record from the json.
if(!is_null($processed)) $rs[] = $processed;
} else {
// no callback function, use the record as is.
$rs[] = $record;
}
}
return json_encode($rs);
}
используйте это так:
$json = recordSetToJson($results,
function($record){
// some change you want to make to every record:
$record["username"] = strtoupper($record["username"]);
return $record;
});
Есть ли в PHP функция или класс, чтобы я мог передать набор записей MySQL и получить возвращенную строку JSON, которую можно передать обратно функции JavaScript в запросе Ajax?
Да: json_encode()
Я хочу немного интегрировать код @Sebastian.
Пожалуйста, не выполняйте присваивание в условии проверки while, в зависимости от последней проверки (той, которая останавливает цикл и возвращает false), но помещает значение false в массив.
Итак, правильный путь - это
function recordSetToJson($mysql_result) {
$rs = array();
while($row=mysql_fetch_assoc($mysql_result)) {
$rs[]=$row;
}
return json_encode($rs);
}