Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
187 views
in Technique[技术] by (71.8m points)

php - Can't insert data in payment table

Does anyone here know why I can't insert my data in my payment table? I just want to insert it but I'm getting this error:

Uncaught Error: Cannot use object of type stdClass as array in C:xampphtdocsacz-thesisappmodelsaccount.php:565

Line 565: $total_amount = $row['sales_net_amount'];

Controller

public function InsertPaymentSales() {
    if(isset($_SESSION['token']) == $this->input->post('token')) {
        $data = array(
            'payment_amount'    => $this->input->post('payment_amount'),
            'payment_date'      => $this->input->post('payment_date'),
            'payment_remark'    => $this->input->post('payment_remark'),
            'payment_balance'   => $this->input->post('payment_balance'),
            'payment_sales_id'  => $this->input->post('payment_sales_id')
        );
        $this->model('account')->sales_payment($data);
    }
}

Model

public function sales_payment($data) {
    $payment_amount     = $data['payment_amount'];
    $payment_date       = $data['payment_date'];
    $payment_remark     = $data['payment_remark'];
    $payment_balance    = $data['payment_balance'];
    $payment_sales_id   = $data['payment_sales_id'];

    $query = $this->db->query("SELECT sales_net_amount, sales_balance FROM tbl_sales_details WHERE sales_id = $payment_sales_id");
    $row = $query->fetch_object();
    $total_amount = $row['sales_net_amount'];
    $balance = $row['sales_balance'];

    if($payment_amount >= $payment_balance && $balance > 0) {
        $query = $this->db->query("INSERT INTO tbl_sales_payments (payment_amount, payment_date, sales_id, payment_remarks) 
        VALUES($payment_amount, '$payment_date', $payment_sales_id, '$payment_remark')");
        if($query) {
            $query = $this->db->query("SELECT SUM(payment_amount) as  total_payments FROM tbl_sales_payments WHERE sales_id = $payment_sales_id"); 
            $row = $query->fetch_object();
            $total_payments = $row['total_payments'];
            $total_balance = $total_amount - $total_payments;

            $query = $this->db->query("UPDATE tbl_sales_details SET sales_balance = $total_balance WHERE sales_id = $payment_sales_id");
            $message = 'Success';
            $query ? notify('success', $message, true) : null;
        }
    } else {
        $message = 'Error';
        notify_amaran([false,'#4caf50','#fff',$message]);
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can try this :

$row = $query->fetch(); $total_amount = $row['sales_net_amount'];

I think that using fetch_object() on $query returns an object instead of an associative array that you want to use with $row['sales_net_amount'].


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.5k users

...