2016-05-05 4 views
0

Ich habe ein PHP-Skript, das Daten in MySQL einfügt, was mit UTF-8 geschehen muss.
Wenn die Aktion erfolgreich ausgeführt wurde, würde ich gerne "Erfolg" mit JSON Echo, weshalb muss ich die Content-Type-Header zweimal oder bin ich falsch?Sollte ich Content-Type-Header zweimal in PHP setzen?

Beispielcode:

<?php 
header('Content-Type: text/html; charset=utf-8'); // header one 
$sql = "INSERT INTO MyGuests (firstname, lastname, email) 
VALUES ('Dennis', 'Enström', '[email protected]')"; 
if (mysqli_query($conn, $sql)) { 
header('Content-Type: application/json'); // header two 
echo json_encode('success'); 
} 

Ist dies der richtige Weg, es zu tun oder wie soll ich es tun?

UPDATE
Der MySQL-Wert kommt von $ _POST und das HTML-Dokument UTF-8 gesetzt hat.

+0

Header sind für die clientseitigen Browser. Sie haben (in diesem Fall) nichts mit PHP zu tun. Also ist der erste Header() unnötig. – adarshdec23

Antwort

0

Verwenden Sie mysqli_set_charset() (PHP manual page), um den von der MySQL-Clientschnittstelle verwendeten Zeichensatz festzulegen.

Die Verwendung von header() sendet eine Kopfzeile an den Browser des Clients, die besagt, wie Sie Ihre JSON-codierte Zeichenfolge "success" lesen.

Es kann zu diesem Zeitpunkt eine gute Idee sein, die in Ihrer Datenbank ausgewählte Kodierung zu validieren.

Beachten Sie, dass Ihr Code derzeit den Befehl zum Öffnen der mysqli-Verbindung vor dem Ausführen der Abfrage fehlt.

+0

Ich habe es gelöst. Ich setze den JSON-Header vor jedem json_encode-Echo. Wenn ich dann die Daten in UTF-8 haben muss, benutze ich utf8_encode und dekodiere usw. Einige Daten, die ich übertragen muss, muss auch in ISO 8859-1 ^^ sein –

Verwandte Themen