【发布时间】:2020-12-28 13:35:17
【问题描述】:
我现在有一个大问题,过去几天我一直在努力解决:
我正在将一个数据库从 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";
请记住,这段代码不是我编写的,我只需要更改这段代码 sn-p 中的每一个变量才能将其发布到此处。
最让我困惑的是,该应用程序与旧的 MySQL 服务器一起工作,除了一些 SQL 语句外,我没有更改任何语法。错误必须在这个 ajax 或配置文件等中。SQL 语句在没有 ajax 的情况下工作我也检查过它们。控制器/模型和 ajax 之间的连接也可以。
我正在使用 codeigniter 和 jquery 3.5.1。
更新:是不是我必须包含 JSON.parse(data); 之类的东西?到 AJAX 语句?
我非常感谢任何帮助,因为目前我完全迷路了,不知道如何解决这个问题。提前非常感谢。
【问题讨论】:
-
只需检查服务器正在接收什么。从您的代码看来,filter_18 已定义。
-
在 PHP 端似乎是一个错误,但你已经共享了 js 代码。请贴出相关的php
标签: php jquery ajax sql-server-2012