Php SELECT-query在非空的字段上返回null

时间:2014-11-29 10:03:13

标签: php mysql sql-server json

我有一个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

3 个答案:

答案 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();

,因此无法从while条件中获取值

您应该使用:

$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);