Mysql选择进入PHP关联数组不起作用

时间:2016-03-15 12:15:31

标签: php mysql select associative-array

我试图从SQL select语句中获取响应,但是当我尝试回显编码为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?

1 个答案:

答案 0 :(得分:3)

您的输入很可能不使用UTF-8字符编码。根据{{​​1}} json_encode“所有字符串数据必须是UTF-8编码”。

当我传递一个包含“¿Cuálnoes un lenguajedeprogramació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开始。