微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库从 MySQL 迁移到 SQL Server 后 AJAX 不起作用未定义索引

如何解决数据库从 MySQL 迁移到 SQL Server 后 AJAX 不起作用未定义索引

目前我遇到了一个大问题,过去几天我一直在努力解决这个问题:

我正在将数据库MysqL 迁移到 MS sql Server 2012,用于现有的 Web 应用程序。

数据迁移成功,与旧数据匹配。

问题是我必须在使用数据库PHP 应用程序中编辑一些 sql 语句。
已成功建立从 PHP-application 到新 MS sql Server 的连接。但是当我尝试通过 ajax 发送查询时,我总是收到此错误

遇到 PHP 错误 严重性:注意
消息:未定义索引:filter_18

这是我使用的ajax代码

    $.ajax({
        url: global_url+"test/getTest",type: 'POST',dataType: 'json',data: {
             filter_1            : filter_1,filter_2            : filter_2,filter_3            : filter_3,filter_4            : filter_4,filter_5            : filter_5,filter_6            : filter_6,filter_7            : filter_7,filter_8            : filter_8,filter_9            : filter_9,filter_10           : filter_10,filter_11           : filter_11,filter_12           : filter_12,filter_13           : filter_13,filter_14           : filter_14,filter_15           : filter_15,filter_16           : filter_16,filter_17           : filter_17,filter_18           : filter_18
        },async: true,success: function(data) {
            $("#test").html(data.html);
            $("#amountofx").html("");
            if(data.amountofx_all != amountofx){
            $("#amountofx").html(data.amountofx_all +" von "+data.amountofx);
            }
            else {
                $("#amountofx").html(data.amountofx);
            }
    
            mleh = $(".x:nth-of-type(1)").height();
            $(".btn_show_x").height(mleh);
            $("#pagenr_data").html(data.pagenr);
            if (data.pagenr == "") {
                $("#pagenr_data").hide();
            }
            else {
                $("#pagenr_data").show();
            }
        },error: function(requestObject,error,errorThrown) {
            alert("Fehler beim Auslesen der Maßnahme.");
            hideOverlay();
        }
        
    });

最先出现错误PHP 是这里的这一行:

//这里我尝试修改sql语句,以便每个站点显示100个对象

    $starting_from = $_POST['filter_18'] * CONSTANT_WITH_THE_VALUE_100 - (CONSTANT_WITH_THE_VALUE_100 - 1);
    $end_at = $_POST['filter_18'] * CONSTANT_WITH_THE_VALUE_100  - 1;
    //$fetch_next = CONSTANT_WITH_THE_VALUE_100 +1;
    $offset = $starting_from -1;
    
    if ( $_POST['filter_18'] > 1) {
        $sql_offset = " OFFSET " . $offset . "ROWS";
    } else { $sql_offset = " OFFSET 0 ROWS";}
        
        $sql_offset .= " FETCH NEXT " .CONSTANT_WITH_THE_VALUE_100. " ROWS ONLY";

请记住,这段代码不是我写的,我只是需要更改这段代码片段中的每个变量才能在此处发布。

最让我困惑的是,该应用程序与旧的 MysqL 服务器一起工作,除了一些 sql 语句之外,我没有更改任何语法。错误必须在这个 ajax 或配置文件等中。sql 语句在没有 ajax 的情况下工作我也检查过。控制器/模型和ajax之间的连接也有效。

我使用的是 codeigniter 和 jquery 3.5.1。

更新:难道我必须包含像 JSON.parse(data); 这样的东西吗?到 AJAX 语句?

我真的很感激任何帮助,因为此刻我完全迷失了,不知道如何解决这个问题。非常感谢。

解决方法

A PHP Error was encountered Severity: Notice
Message: Undefined index: filter_18

当缺少 PHP 数组时会出现此通知。例如,您将在 PHP 中设置一个数组,如下所示:

$phpArr = [
    'filter_1' => 'filter','filter_2' => 'other_filter'
    .
    .
    'filter_17' => 'final_filter'
];

此错误字面意思是 $phpArr 没有在其定义中设置键(也称为“索引”)。如果您的 PHP 配置中的错误设置为抛出 E_ALL,那么这将导致异常。但是,对于大多数应用程序,这只会显示为警告,并且当出现此错误时,PHP 实际上不会失败。至于您为什么要到达它,可能与您作为循环传入的数据有关。您的服务器端代码没有第 18 个过滤器,它可能与您最近的迁移几乎没有关系。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。