我有一个php文件,它返回一个JSON数组,我将与javascript一起使用,用来自sql-database的新闻填充网站。 sql-query在服务器上运行并返回我想要的信息。虽然php文件返回了这个:
[{"rubrik":null,"ingress":null,"datum":"2014-11-10 16:11:54},{"rubrik":null,"ingress":null,"datum":"2014-11-28 23:17:02"}]
日期是正确的。虽然字段" rubrik"和" ingress"有一些文本,不是空的。 数据库如下所示:
NAME TYPE COLLATION NULL
rubrik varchar(254) latin1_swedish_ci No
ingress text latin1_swedish_ci No
nyhet text latin1_swedish_ci No
datum timestamp No
该领域" nyhet"现在不需要了。
这就是我的php文件的样子。
$result = mysqli_query($con, "SELECT rubrik, ingress, datum FROM svensta_news");
$return_arr = array();
while ($row = mysqli_fetch_array($result))
{
$row_array['title']=$row['rubrik'];
$row_array['ingress']=$row['ingress'];
$row_array['date']=$row['datum'];
array_push($return_arr, $row);
}
echo json_encode($return_arr);
我无法理解为什么我的php在非空的字段上返回null的原因。
编辑:有关数据在数据库中的外观的信息
nyhetsId rubrik ingress news date
120 sometitle Someingress Null 2014-11-10 16:11:54
122 sometitle2 Someingress Null 2014-11-28 23:17:02
答案 0 :(得分:1)
我没有测试它,但我认为这应该有效。
$result = mysqli_query($con, "SELECT rubrik, ingress, datum FROM svensta_news");
$return_arr = array();
while ($row = mysqli_fetch_array($result))
{
$return_arr[] = array(
'title' => $row['rubrik'],
'ingress' => $row['ingress'],
'date' => $row['datum']
);
}
echo json_encode($return_arr);
答案 1 :(得分:0)
array_push($return_arr, $row);
由于您声明$return_arr = array();
您应该使用:
$return_arr['title']=$row['rubrik'];
$return_arr['ingress']=$row['ingress'];
$return_arr['date']=$row['datum'];
在你的while条件下获取值。
使用MySQL COLLATE
查询:
SELECT rubrik COLLATE latin1_swedish_ci AS rubrik, ingress COLLATE latin1_swedish_ci AS ingress, datum COLLATE latin1_swedish_ci AS datum FROM svensta_news
答案 2 :(得分:0)
将$ row_array初始化为数组()
也将代码更改为
array_push($return_arr, $row_array);