2016-03-15 56 views
1

我試圖從SQL select語句獲得響應,但是當我嘗試回顯編碼爲JSON的數組時,我沒有任何東西寫入,除了「 - 」我回應以確保我正在進入循環。Mysql進入PHP關聯數組不工作

$sql = "SELECT * FROM PREGUNTA WHERE PREGUNTA.pregunta LIKE '%$palabra_clave%' OR PREGUNTA.respuesta_correcta LIKE '%$palabra_clave%' OR PREGUNTA.respuesta_falsa_1 LIKE '%$palabra_clave%' OR PREGUNTA.respuesta_falsa_2 LIKE '%$palabra_clave%' OR PREGUNTA.retroalimentacion LIKE '%$palabra_clave%'"; 
$query = mysqli_query($con, $sql); 

$json = array(); 

while($data = $query->fetch_assoc()){ 
    $json[] = array(
     'pregunta' => $data['pregunta'], 
     'respuesta_correcta' => $data['respuesta_correcta'], 
     'respuesta_falsa_1' => $data['respuesta_falsa_1'], 
     'respuesta_falsa_2' => $data['respuesta_falsa_2'], 
     'retroalimentacion' => $data['retroalimentacion'] 
); 

    echo $data['pregunta']; 
    echo '<br>'; 
} 

echo json_encode($json); 

而且我這是我的輸出:

¿Cuál no es un lenguaje de programación web? 
¿Cuál es el lenguaje web más importante? 
+1

你檢查了你的錯誤日誌嗎?你假設查詢正在工作。 –

+0

@Jay Blanchard 5我已經拒絕了錯誤日誌,並且沒有任何有關查詢的錯誤。此外,如果查詢不會寫得好,它不會進入我認爲的循環。 –

+1

查詢是唯一的解釋。 '''回聲多少次?一旦?絕對是查詢。 –

回答

3

最有可能您輸入不使用UTF-8字符編碼。根據the documentationjson_encode「所有字符串數據必須使用UTF-8編碼」。

當我傳遞一個包含「Cuálno es un lenguaje deprogramaciónweb?」的數組時到json_encode,它工作正常。但是如果我首先將文本轉換爲ISO-8859-1,則json_encode返回布爾型false,因此不輸出任何內容。

將您的變量與(例如)數組:

$json[] = array('pregunta' => 
    mb_convert_encoding($data['respuesta_correcta'], 'UTF-8', 'ISO-8859-1'), 
    // ... 
); 

或轉換您的數據庫和應用程序使用UTF-8開始。

+0

這是問題所在。現在它可以很好地轉換編碼,但服務器連接使用UTF8_general_ci,數據庫使用UTF8-spanish_ci,表格使用UTF8-spanish_ci。你有什麼想法,爲什麼我有這個問題? –

+0

瀏覽[UTF-8一路瀏覽](http://stackoverflow.com/questions/279170/utf-8-all-the-way-through)。有可能你的堆棧中沒有配置正確使用UTF-8。 –