2016-07-12 10 views
0
require_once('db.php'); 

$sql = "SELECT * FROM tbl"; 

$rs = mysql_query($sql); 

$rows = array(); 

while($r = mysql_fetch_assoc($rs)) { 
    $rows['Record'][] = $r; 
} 

print json_encode($rows); 

mysql_close($conn); 

// es obenurldecode in json funktioniert nicht

while($r = mysql_fetch_assoc($rs)) { 

    $r = utf8_decode(urldecode($r)); 

    $rows['Record'][] = $r; 
} 

perfekt funktioniert // es nicht über Arbeit, kann $ r ein Objekt wie kann ich es funktioniert machen?

+0

sind Sie versuchen, die Daten von json zu analysieren. Welche Art von Antwort willst du, dass irgendeine Syntax mir zeigt –

+0

Was erwarten Sie von diesem '$ r = utf8_decode (urldecode ($ r));' zu tun? –

Antwort

1

Das Problem ist, dass mysql_fetch_assoc ein Array zurückgibt, und Sie möchten es an urldecode übergeben, die auf eine Zeichenfolge als Parameter wartet.

Um zu erreichen, was Sie wollen, sollten Sie urldecode an alle Spalten in der zurückgegebenen $r aufrufen.

Sie können es so machen, zum Beispiel:

$r = array_map(function($col){ 
    return utf8_decode(urldecode($col)); 
}, $r); 

http://php.net/manual/en/function.mysql-fetch-assoc.php

http://php.net/manual/en/function.urldecode.php

+0

Es kommt so zurück {"Record": [{"ID": "1", "name": "John Smith", "E-Mail": "[email protected]", "tel": "12345678" , "total": "0", "edm": "Y", "Empfang": "", "timestamp": "2016-07-07 12:50:52"}, {"ID": "2" , "Name": "Anna Chan ????", "E-Mail": "[email protected]", "tel": "87654321", "total": "200", "edm": "N", "Quittung": "????", "Zeitstempel": "2016-07-07 12:52:15"}]} ???? ist chinesische Zeichen wenn ich utf8_decode von utf8_decode (urldecode ($ col)) wegnehmen; es gibt \ u66f4 \ u65b0 \ u65e5 \ u671f Wie kann ich es lösen? – lee