php - Mysql select into PHP associative array 不工作

标签 php mysql select associative-array

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

相关文章:

mysql - 与相关产品表中相同型号的产品

php - 对 2 种类型的消息 gcm 使用折叠键

php - 在单个表中使用 if 进行计数并在两个单独的列中显示结果 - mysql

javascript - 无法获取 401 响应正文

php - SQL 使用 replace() 选择 LIKE 结果和精确结果

mysql - 尝试安装 Perl-Mysql DBD,找不到 mysql_config

php - codeigniter 内连接表语法

javascript - 使用Ajax和PHP插入数据库(mysql)

mysql - 如何从具有字符串列的表中获取记录,其中字符串列的值以给定的子字符串开头?

PostgreSQL - 条件聚合 - Select 语句中的 Avg()