我有一个返回JSON数组的php文件,我将与javascript结合使用,用来自sql数据库的新闻填充网站。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
测试它,但我认为这应该有效。
$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);
$row_array 初始化为 array()
还将代码更改为
array_push($return_arr, $row_array);
array_push($return_arr, $row);
不会从 while 条件中获取值,因为您声明了$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