2010-08-07 21 views
6

PHP'de bir MySQL kayıt kümesini geçirebileceğim bir işlev veya sınıf var mı ve bir Ajax isteğindeki bir JavaScript işlevine geri döndürülebilen bir JSON dizgisi alıyorum? BöyleMySQL kaydını PHP'de JSON dizesine dönüştürme

şey:

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 
} 

cevap

12

Bu çalışması gerekir:

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

size bir geri çağırma işlevi eklemenizi sağlar aşağıdaki -daha karmaşık- sürümünü kullanabilirsiniz sonuç kümesine işlemek gerekiyorsa o her kayıtta çağrılacak ve zaten işlenmiş olan kayıt geri dönmelidir:

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

Bunun gibi:

$json = recordSetToJson($results, 
    function($record){ 
     // some change you want to make to every record: 
     $record["username"] = strtoupper($record["username"]); 
     return $record; 
    }); 
+0

Sonuç kümesini bir şekilde manipüle etmek isterse ne olur? – NullUserException

+0

Sebastian'ın çözümü –

+1

@NullUserException çalıştığı görünüyor, o zaman bu genel bir işlev kullanmamalı. –

5

Ben MySQL recordset geçebilir PHP'de bir fonksiyon veya sınıf var mı ve ben JSON dize o bir bir JavaScript işlevine geri geçirilebilir döndü olsun Ajax isteği?

Evet: json_encode()

+0

evet teşekkür ederim. Yapmakta olduğum sorun, daha sonra kodlanabilen çoklu mysql kayıt kümelerini içeren bir PHP dizisi hazırlamaktı. –

+0

Sadece işe yarayabilecek bir şey buldum. www.barattalo.it/2010/01/25/10-php-usefull-functions-for-mysql-stuff/. ___ Ancak javascript alanındaki alanları referans gösteremiyorum. –