为了账号安全,请及时绑定邮箱和手机立即绑定

POST https://www....?action=getclientRecords

POST https://www....?action=getclientRecords

PHP
素胚勾勒不出你 2021-11-13 16:48:36
我有 2 个动态依赖 SelectBoxes,一个带有客户名称,另一个带有发票日期,带有一个按钮,可分别根据客户名称和他的日期获取数据,并填充下面的表单字段。整个过程已完成并且正在运行,但由于日期未获取,整个过程停止。现在客户由我决定,我不知道该怎么办。我不太擅长 php 或 js。如果你们能帮我解决这个问题,并试着用更简单的方式解释我会欠你们的。TIA。它工作正常,但突然它获取客户名称而不是日期,我不知道为什么。该程序运行正常近 5 6 个月,但几天前此错误突然发生,没有任何更改。我试图创建新的数据库思考可能是错误但它没有用。我还使用备份恢复了代码文件,但仍然没有运气。//数据.php<?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);    }?>结果。IEClient name = YAP KHIN CHOYDate: 2 June, 2019, 3 June, 2019, 5 June, 2019Pressing Fetch Button:Populate the form below with the relevant data.
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

为了同时解决 sql 漏洞和缺少返回数据(数据未echoed返回到 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 );

?>



查看完整回答
反对 回复 2021-11-13
  • 1 回答
  • 0 关注
  • 271 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信