我试图从 SQL 选择语句中获取响应,但是当我尝试回显编码为 JSON 的数组时,除了“-”之外我没有写任何东西,我回显以确保自己进入循环。
$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?
最佳答案
很可能您的输入没有使用 UTF-8 字符编码。根据the documentation对于 json_encode
“所有字符串数据必须采用 UTF-8 编码”。
当我传递一个包含“¿Cuál no es un lenguaje de programación web?”的数组时到 json_encode
,它工作正常。但是,如果我首先将文本转换为 ISO-8859-1,json_encode
返回 bool 值 false
,因此不输出任何内容。
使用(例如)将您的变量分配给数组:
$json[] = array('pregunta' =>
mb_convert_encoding($data['respuesta_correcta'], 'UTF-8', 'ISO-8859-1'),
// ...
);
或者首先将您的数据库和应用程序转换为使用 UTF-8。
关于php - Mysql select into PHP associative array 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36011089/