我正在为php创建web服务。
在数据库中,有一些行包含html和css define。
从数据库json获取数据时显示空数据。
任何帮助都会有所帮助
实施例
VivendadosPalhaços这显示了我的结果“null”
我的代码:
<?php
error_reporting(~E_ALL);
$format = $_REQUEST['format'];
if(!isset($format))
$format = "json";
if($format == 'json') {
header('Content-Type: application/json');
} else if ($format == 'xml') {
ob_clean();
header('Content-Type: text/xml; charset=ISO-8859-1');
echo "<?xml version='1.0' encoding='ISO-8859-1'?>";
}
//open database connection
include 'config.php';
include 'open_db_connection.php';
include 'util.php';
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");
$region = $_REQUEST['region'];
$method = $_REQUEST['method'];
if($method == 'GET') {
if($region == 'Central')
{
$q=$_REQUEST['q'];
$famille_id = $_REQUEST['famille_id'];
//print $famille_id; exit;
$sql_fn = "SELECT * FROM region WHERE id='4'"; //Central Goa
$result2 = mysql_query($sql_fn) or die(mysql_error());
$row2 = mysql_fetch_assoc($result2);
$sql = "select id,titre,famille_id from categorie where famille_id =".$famille_id;
$result = mysql_query($sql, $db) or die(mysql_error());
$j=0;
while ($row = mysql_fetch_assoc($result))
{
$sql="SELECT * FROM etablissement where categories LIKE '%".$row['id']."%' AND familles LIKE '%".$row['famille_id']."%' AND region_id LIKE '%".$row2['id']."%'";
$result1 = mysql_query($sql,$db) or die(mysql_error());
$i=0;
while($row3 = mysql_fetch_assoc($result1))
{
$arraycont[$i]['main_category_name'] = 'PARTY';
$arraycont[$i]['categories_name'] = $row['titre'];
$arraycont[$i]['categories'] = $row['id'];
$arraycont[$i]['sstitre'] = $row3['sstitre'];
$arraycont[$i]['adresse'] = $row3['adresse'];
$arraycont[$i]['lieu'] = $row3['lieu']." / ".$row2['nom']." | ".$row['titre'];
$arraycont[$i]['nom'] = $row3['nom'];
$arraycont[$i]['txtintro'] = $row3['txtintro'];
$arraycont[$i]['image'] = $imagepath.$row3['id']."/01.jpg";
$arraycont[$i]['latitude'] = $row3['latitude'];
$arraycont[$i]['longitude'] = $row3['longitude'];
$arraycont[$i]['txtcontact'] = $row3['txtcontact'];
$arraycont[$i]['tel'] = $row3['tel'];
$i++;
}
$finalarray[$j]["titre"] = $row['titre'];
$finalarray[$j]["id"] = $row['id'];
$finalarray[$j]["categories"] = $arraycont;
$j++;
}
echo json_encode($finalarray); // final output in JSON
}
include 'close_db_connection.php';
?>
答案 0 :(得分:1)
我不知道您的数据库编码是什么,但我认为它是ISO-8859-1,因为您还以此编码输出您的页面。
问题是,根据定义,JSON始终始终 UTF-8编码。此外,PHP的json_encode
不接受UTF-8以外的其他编码输入;如果在对象结构中的任何位置遇到不同编码的字符,则相应的节点将为null
。
以下示例将演示此效果:
$test = array('foo' => 'äöü', 'bar' => 'äöü');
$test['foo'] = mb_convert_encoding($test['foo'], 'ISO-8859-1', 'UTF-8');
echo json_encode($test);
结果:
{"foo":null,"bar":"\u00e4\u00f6\u00fc"}
解决方案:将您的数据库输出转换为UTF-8,将您的HTML文件保存为UTF-8,并将标题设置为UTF-8。
答案 1 :(得分:1)
首先,您必须将数据库表排序规则设置为UTF-8 general ci
。
然后在通过select查询获取数据之前,您需要插入这些char设置行。
mysql_query("SET NAMES 'UTF8'");
request_result = executre your select query.
答案 2 :(得分:1)
您的数据必须编码为UTF-8或ISO-8859-1。
http://www.php.net/manual/de/function.json-encode.php
因为如果你试图转换一个非utf8字符数组,你将得到0作为返回值