PHP7脚本崩溃

时间:2018-04-03 07:21:46

标签: php php-7

我有一个在PHP 5.6中运行良好的脚本,但它在PHP 7中返回null。可能是什么问题?

<?php

$rs = mysqli_query($con, $sql);
if ($rs != false) {

    $event_array_all = array();
    if ($rs && mysqli_num_rows($rs)) {
        while ($row = mysqli_fetch_array($rs, MYSQL_ASSOC)) {

            $event_array[] = array(
                'id' => $row['CourtID'],
                'title' => $row['CourtName'],
                'eventColor' => '#428bca'
            );
        }
    }
    echo json_encode($event_array);
}

谢谢, 戈兰

2 个答案:

答案 0 :(得分:1)

您应该存储在 $ events_array_all 中,而不是 $ event_array 并使用 MYSQLI_ASSOC 代替 MYSQL_ASSOC

<?php

$rs = mysqli_query($con, $sql);
if ($rs != false) {

    $event_array_all = array();
    if ($rs && mysqli_num_rows($rs)) {
        while ($row = mysqli_fetch_array($rs, MYSQLI_ASSOC)) {

            $event_array_all[] = array(
                'id' => $row['CourtID'],
                'title' => $row['CourtName'],
                'eventColor' => '#428bca'
            );
        }
    }
    echo json_encode($event_array_all);
}

答案 1 :(得分:1)

IMO - 主要错误是这个

 mysqli_fetch_array($rs, MYSQL_ASSOC)

@Deepak Kumar T P和其他人提到过,但我想详细说明一下。

在PHP5.6中MYSQL_ASSOC = MYSQLi_ASSOC = 1

在PHP7中MYSQL_ASSOC不存在,因此抛出未定义常量的警告(或通知),假定'MYSQL_ASSOC'将其转换为字符串,然后引发各种问题。所以这个拼写错误在5.6中运行正常,因为两个常量具有相同的值,但是在PHP7中,错误被暴露,因为另一个常量不再存在。

所以我不会说这是一个值得接受的答案,但是我可以添加评论,我只是想清楚一点。再次感谢@Deepak Kumar T P