Mysql select 到 PHP 关联数组不起作用

Mysql select into PHP associative array not working

我试图从 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?

很可能您的输入没有使用 UTF-8 字符编码。根据 the documentation 对于 json_encode "All string data must be UTF-8 encoded".

当我传递一个包含“¿Cuál no es un lenguaje de programación web?”的数组时到 json_encode,它工作正常。但是,如果我首先将文本转换为 ISO-8859-1,json_encode returns 布尔值 false 因此什么都不输出。

将您的变量分配给数组(例如):

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

或将您的数据库和应用程序转换为使用 UTF-8 开头。