2010-08-07 129 views
6

在PHP中是否有一個函數或類可以傳遞一個MySQL記錄集,並且我得到一個返回的JSON字符串,可以在Ajax請求中傳遞迴JavaScript函數?在PHP中將MySQL記錄集轉換爲JSON字符串

是這樣的:

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 
} 

回答

12

這應該工作:

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; 
    }); 
+0

如果他想以某種方式操縱結果集,該怎麼辦? – NullUserException 2010-08-07 13:00:23

+0

塞巴斯蒂安的解決方案似乎工作 – 2010-08-07 13:09:22

+1

@NullUserException他不應該使用這個泛型然後。 – 2010-08-07 13:15:49

5

是否有PHP函數或類,我可以通過一個MySQL的記錄,我得到一個JSON字符串返回,可以在被傳遞迴JavaScript函數Ajax請求?

是:json_encode()

+0

是的謝謝。我遇到的麻煩是準備一個包含多個mysql記錄集的PHP數組,然後可以對其進行編碼。 – 2010-08-07 12:58:53

+0

我剛發現可能有用的東西。 www.barattalo.it/2010/01/25/10-php-usefull-functions-for-mysql-stuff/。 ___但是我無法在JavaScript中引用字段。 – 2010-08-07 13:01:18