2016-04-26 16 views
0

Ich versuche das zum ersten Mal, also kommt mein Code komplett aus Tutorials, aber es funktioniert einfach nicht. I run PHP 7 mit JSON 1.4.0 aktiviert.PDO json_encode funktioniert nicht, wo ist der Fehler?

Ich kann die resultierenden Zeilen drucken, wenn ich json_encode nicht verwende, so dass meine Verbindung und die Abfrage in Ordnung sind.

Fehlerbericht ist aktiv, gibt aber auch nichts aus.

Wenn ich die PHP-Datei auf meinem Server ausführen, bekomme ich nur eine leere Seite.

Hier ist mein Code:

error_reporting(-1); 

try { 
    $conn=new PDO("mysql:host=server.com;dbname=theDB",username,password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare('SELECT * FROM table'); 
    $stmt->execute(); 

    header('Content-type: application/json'); 
    echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); 



} catch(PDOException $e) { 
     echo 'ERROR: ' . $e->getMessage(); 
} 
+1

hinzufügen 'ini_set ('display_errors', 1);', um Ihren Code oder schau in deine Fehlerprotokolle. –

+1

@bub das '-1' in PHP schaltet [alle PHP Fehler] ein (http://php.net/manual/en/function.error-reporting.php), aber sie werden möglicherweise nicht angezeigt. –

+1

Sie setzen den Ausnahme-Modus NACH dem Versuch, die Verbindung herzustellen. Standardmäßig löst pdo keine Ausnahmen aus. Wenn die Verbindung fehlschlägt, wird keine Ausnahme ausgelöst, da die Ausnahmen noch nicht aktiviert wurden. –

Antwort

2

LÖSUNG: (Danke @trincot & @RiggsFolly) ich diese Linie

$conn=new PDO("mysql:host=server.com;dbname=theDB",username,password); 

zu

$conn=new PDO("mysql:host=server.com;dbname=theDB;charset=UTF8",username,password);` 
1

ändern musste json_encode() Es wird keine t eine Ausnahme auf Fehler werfen, müssen Sie verify the result yourself:

if (json_last_error()!==JSON_ERROR_NONE) { 
    echo json_last_error_msg(); 
    exit; 
} 

Fast jedes Mal diese Frage kommt hier es ist JSON_ERROR_UTF8:

Malformed UTF-8 characters, possibly incorrectly encoded

Verwandte Themen