2016-07-01 8 views
1

StackOverflowには多くの例がありますが、私のコードではエラーが見えません。私はいくつかのチュートリアルに続き、このフォーラムからいくつかのコードをコピーしましたが、それでもエラーのバグがあります。PHPからJSONを取得するMySQL接続

マイCREATE TABLEクエリ:

CREATE TABLE `e1_ENGLISH` (
    `entry_id` int(11) NOT NULL AUTO_INCREMENT, 
    `words_e1` char(30) NOT NULL, 
    `date` date DEFAULT NULL, 
    `phonetic_e1` varchar(50) NOT NULL, 
    PRIMARY KEY (`entry_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4 

私のPHPコード:

<?php 
// establish connection 
// mysqli contect (host, user, pass, db) 
$conn = mysqli_connect("localhost","androidapp","password","myDB"); 

// check for connection success 
if(!$conn) { 
    die("Error, could not connect: " . mysqli_connect_error()); 
} 

// build query 
$sql = "SELECT * FROM e1_ENGLISH"; 
$result = mysqli_query($conn, $sql); // fetch data 

// convert result to array 
$resArray = array(); 
while ($row = mysqli_fetch_assoc($result)) { 
    //$resArray[] = $row; 
    $resArray[] = utf8_encode($row); 
} 

// display result 
echo json_encode($resArray); 

// close connection 
mysqli_close($conn); 
?> 

私は(utf8_encodeで)取得出力:

[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null] 

私はちょうど$resArray[] = $row;で空白の画面を取得します

私はPHP、MySQLデータ、Webサーバを初めて使用しています。何か間違いが見つかることはありますか?さらに、私はスクリプトや何も持っていない、これはストレートPHPです。

ありがとうございます!

+0

代わり 'fetch_array'又は' $ resArray [] =はutf8_encode($行[ 'put_column_name_hereを'])のいずれかを使用fetch_assoc' 'の; //すべてのためのwhileループにおいてそれを繰り返します「列」をクリックして –

+0

を確認してください。 'fetch_assoc'と他の' fetch_'メソッドとの違いは何ですか?なぜ私はいくつかの例がそれを使用する理由を理解するのが難しいです。 – Frank

+1

'fetch_assoc'は連想配列を与えたので、そこに列名を使う必要があります。 'fetch_array()'はあなたに両方のコンボ(数値+連想)を与えます。あなたは数値だけを得ることができます。その上にgoogleを確認してください –

答えて

2

utf8_encode()の引数は文字列でなければならず、配列で呼び出すことはできません。 $rowを各要素で呼び出す必要があります。

$resArray = array(); 
while ($row = mysqli_fetch_assoc($result)) { 
    foreach ($row as &$val) { 
     $val = utf8_encode($val); 
    } 
    $resArray[] = $row; 
} 
+0

ありがとう!これは私にJSON形式のデータを示しているようです。 – Frank

+0

ちょっと@Barmar、データベースでこの 'boθ'を見ているうちにブラウザでこの' bo? 'を見ることができますか?私はまだUTF-8の問題があるようです。私のデータベースとテーブルはすべて 'utf8mb4'です。 – Frank

+0

''に正しいエンコーディングが指定されていることを確認してください。 – Barmar

2

あなたは、アレイ上に記録することで、このように取得し、あなたがループに自分の行を持って見て名前とlast_nameのは、データベースに

  $res_array = array(); 

      while($row = $result->mysqli_fetch_assoc()) { 
       $single_record = array(  
        "NAME_U_WANT1" => $row['NAME'], 
        "NAME_U_WANT2" => $row['LAST_NAME'], 
       ); 
       array_push($res_array, $single_record); 
      } 

     return json_encode($res_array); 

あなたの行の名前である配列をjson_encodeしようとすることができます

2

utf8_encode()が文字列をとります。 array_map()各配列要素をコード:

while ($row = mysqli_fetch_assoc($result)) { 
    $resArray[] = array_map('utf8_encode', $row); 
} 
echo json_encode($resArray); 
+0

ねえ、ありがとうが、私はサーバーから500エラーを取得します。その行と何が衝突する可能性がありますか? – Frank

+0

他の問題があります。 – AbraCadaver

関連する問題