Javascript 邮递https://www....?action=getclientRecords 在获取数据时显示错误500
我有两个动态相关的选择框,一个是客户名称,另一个是发票日期,带有按钮,分别根据客户名称和他的日期获取数据,并填充下面的表单字段。整个过程已完成并正在运行,但由于日期不确定,整个过程停止。现在,客户就在我屁股上,我不知道该怎么办。我不太擅长php或js。如果你们能帮我,试着用更简单的方式解释,我将欠你们的债。蒂亚 它工作的很好,但突然它的客户名称,但不是日期,我不知道为什么。该程序在近5-6个月内运行良好,但几天前,这个错误突然发生,没有任何更改 我试图创建一个新的数据库,我认为这可能是个错误,但没有成功 我还用备份还原了代码文件,但仍然没有成功 //data.phpJavascript 邮递https://www....?action=getclientRecords 在获取数据时显示错误500,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,我有两个动态相关的选择框,一个是客户名称,另一个是发票日期,带有按钮,分别根据客户名称和他的日期获取数据,并填充下面的表单字段。整个过程已完成并正在运行,但由于日期不确定,整个过程停止。现在,客户就在我屁股上,我不知道该怎么办。我不太擅长php或js。如果你们能帮我,试着用更简单的方式解释,我将欠你们的债。蒂亚 它工作的很好,但突然它的客户名称,但不是日期,我不知道为什么。该程序在近5-6个月内运行良好,但几天前,这个错误突然发生,没有任何更改 我试图创建一个新的数据库,我认为这可能是个错误,但
<?php
require '../db_connection.php';
header("Access-Control-Allow-Origin: *");
$action = $_GET['action'];
if($action=="getclientRecords"){
getclientRecords($con);
}
function getclientRecords($con){
$id = $_POST['client_id'];
$sql="SELECT `invoice_data`.`item_date` FROM `invoice_data` WHERE `invoice_data`.`client_id`=$id";
$result = mysqli_query($con, $sql);
$results = mysqli_fetch_all($result);
return json_encode($results);
}
$date = $_GET['action'];
if($date=="getclientRecordByDate"){
getclientRecordByDate($con);
}
function getclientRecordByDate($con){
$client_date = $_POST["date"];
$client_id = $_POST["client_id"];
$sql = "SELECT client_name, `item_date`, item_refe, item_parti, balance_amount, item_amnd, item_amnf, item_tax, item_amniw, item_amnif FROM `invoice_data` WHERE `item_date` = '$client_date' AND client_id = '$client_id'";
$result = mysqli_query($con, $sql);
$results = mysqli_fetch_array($result);
echo json_encode($results);
}
?>
为了解决sql漏洞和缺少返回数据的问题(数据没有
回显到ajax函数中),以下内容可能会有所帮助
<?php
require '../db_connection.php';
function getclientRecords( $con=false ){
$id = isset( $_POST['client_id'] ) ? $_POST['client_id'] : false;
if( $con && $id ){
$sql='select `item_date`
from `invoice_data`
where `client_id`=?';
$stmt=$con->prepare( $sql );
$stmt->bind_param( 's', $id );
$stmt->execute();
$result=$stmt->get_result();
$data=[];
while( $rs=$result->fetch_object() ){
$data[]=$rs->item_date;
}
$stmt->free_result();
$stmt->close();
return json_encode( $data );
}
return false;
}
function getclientRecordByDate( $con=false ){
$date = isset( $_POST['date'] ) ? $_POST['date'] : false;
$id = isset( $_POST['client_id'] ) ? $_POST['client_id'] : false;
if( $con && $id && $date ){
$sql = 'select `client_name`, `item_date`, `item_refe`, `item_parti`, `balance_amount`, `item_amnd`, `item_amnf`, `item_tax`, `item_amniw`, `item_amnif`
from `invoice_data`
where `item_date` = ? and client_id = ?';
$stmt=$con->prepare( $sql );
$stmt->bind_param( 'ss', $date, $id );
$stmt->execute();
$result=$stmt->get_result();
$data=[];
while( $rs=$result->fetch_object() ){
$data[]=array(
'client_name' => $rs->client_name,
'item_date' => $rs->item_date,
'item_refe' => $rs->item_refe,
'item_parti' => $rs->item_parti,
'balance_amount' => $rs->balance_amount,
'item_amnd' => $rs->item_amnd,
'item_amnf' => $rs->item_amnf,
'item_tax' => $rs->item_tax,
'item_amniw' => $rs->item_amniw,
'item_amnif' => $rs->item_amnif
);
}
$stmt->free_result();
$stmt->close();
return json_encode( $data );
}
return false;
}
$data=[];
$action = isset( $_GET['action'] ) ? $_GET['action'] : false;
switch( $action ){
case 'getclientRecords':
$data=getclientRecords($con);
break;
case 'getclientRecordByDate':
$data=getclientRecordByDate($con);
break;
default:
$data=['error'=>'no defined action'];
break;
}
header('Access-Control-Allow-Origin: *');
http_response_code( $action ? 200 : 400 );
exit( $data );
?>
为了解决sql漏洞和缺少返回数据的问题(数据没有回显到ajax函数中),以下内容可能会有所帮助
<?php
require '../db_connection.php';
function getclientRecords( $con=false ){
$id = isset( $_POST['client_id'] ) ? $_POST['client_id'] : false;
if( $con && $id ){
$sql='select `item_date`
from `invoice_data`
where `client_id`=?';
$stmt=$con->prepare( $sql );
$stmt->bind_param( 's', $id );
$stmt->execute();
$result=$stmt->get_result();
$data=[];
while( $rs=$result->fetch_object() ){
$data[]=$rs->item_date;
}
$stmt->free_result();
$stmt->close();
return json_encode( $data );
}
return false;
}
function getclientRecordByDate( $con=false ){
$date = isset( $_POST['date'] ) ? $_POST['date'] : false;
$id = isset( $_POST['client_id'] ) ? $_POST['client_id'] : false;
if( $con && $id && $date ){
$sql = 'select `client_name`, `item_date`, `item_refe`, `item_parti`, `balance_amount`, `item_amnd`, `item_amnf`, `item_tax`, `item_amniw`, `item_amnif`
from `invoice_data`
where `item_date` = ? and client_id = ?';
$stmt=$con->prepare( $sql );
$stmt->bind_param( 'ss', $date, $id );
$stmt->execute();
$result=$stmt->get_result();
$data=[];
while( $rs=$result->fetch_object() ){
$data[]=array(
'client_name' => $rs->client_name,
'item_date' => $rs->item_date,
'item_refe' => $rs->item_refe,
'item_parti' => $rs->item_parti,
'balance_amount' => $rs->balance_amount,
'item_amnd' => $rs->item_amnd,
'item_amnf' => $rs->item_amnf,
'item_tax' => $rs->item_tax,
'item_amniw' => $rs->item_amniw,
'item_amnif' => $rs->item_amnif
);
}
$stmt->free_result();
$stmt->close();
return json_encode( $data );
}
return false;
}
$data=[];
$action = isset( $_GET['action'] ) ? $_GET['action'] : false;
switch( $action ){
case 'getclientRecords':
$data=getclientRecords($con);
break;
case 'getclientRecordByDate':
$data=getclientRecordByDate($con);
break;
default:
$data=['error'=>'no defined action'];
break;
}
header('Access-Control-Allow-Origin: *');
http_response_code( $action ? 200 : 400 );
exit( $data );
?>
Hi,开始调试的最佳方法是激活错误日志并显示它们,它们将成为结果的一部分,因此您将得到无效的json,但您至少可以在响应中看到问题所在:修复500个错误后,您需要回显函数的结果:即echo getclientRecords($con)代码>否则它将不会返回给请求者。希望这有帮助!令人困惑的是,另一种方法有return
另一种方法有echo
。也许您的意思是getclientRecords
返回为echo json\u encode($results)代码>保持一致,要么在函数内部使用return,要么立即回显它,只需选择与您的特定问题无关的一个,但您的代码容易受到SQL注入的攻击,因此如果您现在受到来自客户端的压力,只需想一想如果系统被破坏会发生什么?您有没有可能也添加ajax代码?您好,开始调试的最佳方法是激活错误日志并显示它们,然后它们将成为结果的一部分,因此您将得到无效的json,但您至少可以在响应中看到问题所在:修复500个错误后,您需要回显函数的结果:即回显getclientRecords($con)代码>否则它将不会返回给请求者。希望这有帮助!令人困惑的是,另一种方法有return
另一种方法有echo
。也许您的意思是getclientRecords
返回为echo json\u encode($results)代码>保持一致,要么在函数内部使用return,要么立即回显,只需选择与您的特定问题无关的OneNote,但您的代码容易受到SQL注入的攻击,因此如果您现在面临来自客户端的压力,请想想如果系统被破坏会发生什么?您是否有可能也添加ajax代码?非常感谢您的帮助,这将解决安全问题,但我的问题仍然存在。你也能帮我吗/我意识到我在使用原始函数时犯了一个错误,因此将这些函数修改为现在的样子。我对它们进行了简单的测试,它们似乎很有效。顺便说一句,我有一个小问题要问。我可以在这里提问,还是需要创建另一个问题?看,我有一个datatable,我在其中显示数据,但它只在我单击(表头)时显示数据,即当我单击列中的Firstname时,它显示数据,当我刷新页面数据时,对我来说,听起来这应该是一个新问题非常感谢您的帮助这将解决安全问题,但我的问题仍然存在。你也能帮我吗/我意识到我在使用原始函数时犯了一个错误,因此将这些函数修改为现在的样子。我对它们进行了简单的测试,它们似乎很有效。顺便说一句,我有一个小问题要问。我可以在这里提问,还是需要创建另一个问题?看,我有一个datatable,我在其中显示数据,但它只在我单击(表头)时显示数据,即,当我单击列中的Firstname时,它显示数据,当我刷新页面数据时,它不可见。对我来说,这听起来应该是一个新问题