0

我有一些数据存储在 MySQL 表中,我使用 PDO 将其取出。该函数将查询结果放入一个数组中,并且所有字段都存在:

  Array ( 
    [0] => Array ( [id] => 1 [nome] => Oggetto 1 [descr] => Questa è la favolosa descrizione dell'oggetto 1 [prezzo] => 50.00 [imgpath] => dummy.jpg [url] => http://localhost/ [cat] => 1 [avail] => 1 ) 
    [1] => Array ( [id] => 2 [nome] => Oggetto 2 [descr] => Questa è la favolosa descrizione dell'oggetto 2 [prezzo] => 45.00 [imgpath] => dummy.jpg [url] => http://localhost/ [cat] => 1 [avail] => 1 ) 
    [2] => Array ( [id] => 3 [nome] => Oggetto 3 [descr] => Questa è la meravigliosa descrizione dell'oggetto 3 [prezzo] => 120.00 [imgpath] => dummy.jpg [url] => http://localhost/ [cat] => 3 [avail] => 1 ) 
    [3] => Array ( [id] => 4 [nome] => Oggetto 4 [descr] => Questa è la meravigliosa descrizione dell'oggetto 4 [prezzo] => 200.00 [imgpath] => dummy.jpg [url] => http://localhost [cat] => 2 [avail] => 1 ) 
    [4] => Array ( [id] => 5 [nome] => Oggetto 5 [descr] => Questa è la fantasiosa descrizione dell'oggetto 5 [prezzo] => [imgpath] => dummy.jpg [url] => http://locahost [cat] => 4 [avail] => 1 ) )

问题是我需要一个 json 格式的数据响应,所以我使用该json_encode函数将 PHP 数组转换为 JSON 格式的数据,但是正如您从以下输出中看到的那样,该字段descr已经丢失,我不知道为什么:

    [
      {"id":"1","nome":"Oggetto 1","descr":null,"prezzo":"50.00","imgpath":"dummy.jpg","url":"http:\/\/localhost\/","cat":"1","avail":"1"},
      {"id":"2","nome":"Oggetto 2","descr":null,"prezzo":"45.00","imgpath":"dummy.jpg","url":"http:\/\/localhost\/","cat":"1","avail":"1"},
      {"id":"3","nome":"Oggetto 3","descr":null,"prezzo":"120.00","imgpath":"dummy.jpg","url":"http:\/\/localhost\/","cat":"3","avail":"1"},
      {"id":"4","nome":"Oggetto 4","descr":null,"prezzo":"200.00","imgpath":"dummy.jpg","url":"http:\/\/localhost","cat":"2","avail":"1"},
      {"id":"5","nome":"Oggetto 5","descr":null,"prezzo":null,"imgpath":"dummy.jpg","url":"http:\/\/locahost","cat":"4","avail":"1"}
    ]

这可能是因为我desc在表格中声明了 as 文本字段吗?如果是这样,我如何确保从 PHP 数组传递到 JSON 格式数据时该字段中的数据不会丢失?

4

2 回答 2

1

因为 [descr] 字符串包含扩展字符,您可能需要使用 PHP 的htmlentities函数对其进行编码。

于 2013-02-20T11:04:48.163 回答
0

检查您的descr字段值,该字符è在 JSON 中不是可执行字符,因此htmlentities($_POST[descr])在获取数组结果之前使用。

前任:

<?php
    $a = htmlentities("Questa è la favolosa descrizione dell'oggetto 1");
    $arr = array('a' => $a);

    echo json_encode($arr);
?>

结果是,

{"a":"Questa è la favolosa descrizione dell'oggetto 1"}

http://codepad.org/M2P8mnR8

注意: 您可以使用 UTF8 使用 MYSQL 本身对这些字符进行编码

于 2013-02-20T11:13:01.950 回答