我有一个在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);
}
谢谢, 戈兰
答案 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