2016-05-05 5 views
0

MySQLにデータを挿入するPHPスクリプトがあります。これはUTF-8を使用して行う必要があります。
アクションが正常に実行された場合は、JSONを使用して「成功」をエコーし​​たいのですが、Content-Typeヘッダーを2回設定する必要がありますか、間違っていますか?PHPでContent-Typeヘッダを2回設定する必要がありますか?

例コード:

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

は、これは正しいことを行う方法やどのように私はそれを行う必要がありますか?

UPDATE
MySQLの値は、$ _POSTから来て、HTML文書はUTF-8セットを持っています。

+0

ヘッダーはクライアント側のブラウザ用です。彼らはPHP(この場合)とは何の関係もありません。したがって、最初のheader()は不要です。 – adarshdec23

答えて

0

mysqli_set_charset()PHP manual page)を使用して、Mysqlクライアントインターフェイスで使用される文字セットを設定します。

header()を使用すると、クライアントのブラウザにJSONでエンコードされた「成功」文字列を読み取る方法を示すヘッダーが送信されます。

この時点で、データベースで選択されているエンコーディングを検証することをお勧めします。

現在、コードではクエリを実行する前にmysqli接続を開くコマンドがないことに注意してください。

+0

私はそれを解決しました。 json_encodeエコーの前にJSONヘッダーを設定しています。次に、UTF-8でデータを取得する必要があるときは、utf8_encodeを使用してデコードします。送信する必要のあるデータは、ISO 8859-1にも入っていなければなりません^^ –

関連する問題