简体   繁体   中英

Unable to update table using PDO

I have a data and query as below:

$msg = 'ABCDEFGH|AMI16025|GCIT4717730132|454627-028411|2.00|CIT|472642|03|INR|DIRECT|NA|NA|NA|31-08-2016 12:07:54|0300|NA|nitish.dola@gmail.com|09706125041|NA|NA|NA|NA|NA|NA|Success|8B4CB175614193B447959AD852B114FD709E6664FAC0566C0566B440BB8EA446';

    $splitdata          = explode('|', $msg);
    $customer_id        = $splitdata[1];

    $transaction_id     = $splitdata[2];

    $bank_id            = $splitdata[5];
    $bank_merchant_id   = $splitdata[6];

    $trans_type         = $splitdata[7];
    $pay_date           = date('Y-m-d H:i:s', strtotime($splitdata[13]));

    $response_message   = '';
    $response_message   .= $splitdata[24];

    $amount_paid        = $splitdata[4];

    $bank_response_code = $splitdata[14];

    $curreny            = $splitdata[8];

    if($bank_response_code == "0300") // success trans condition
    {
        $success = true;
        //update the database
        $sql = "UPDATE ami_delegate_payments SET 
            payment_status = :payment_status, 
            amount_paid = :amount_paid,
            pay_date    = :pay_date,
            payment_type       = :payment_type,
            transaction_id     = :transaction_id,
            bank_id     = :bank_id,
            bank_merchant_id   = :bank_merchant_id,
            bank_response_code = :bank_response_code,
            bank_message       = :msg,
            curreny     = :curreny
            WHERE customer_id = :customer_id";

        $pdo->beginTransaction();
        try {                          
        $stmt = $pdo->prepare($sql);

        $payment_status = 1;

        $stmt->bindParam(':payment_status', $payment_status, PDO::PARAM_STR);                                               
        $stmt->bindParam(':amount_paid', $amount_paid, PDO::PARAM_STR); 
        $stmt->bindParam(':pay_date', $pay_date, PDO::PARAM_STR); 
        $stmt->bindParam(':payment_type', $payment_type, PDO::PARAM_STR); 
        $stmt->bindParam(':transaction_id', $transaction_id, PDO::PARAM_STR); 
        $stmt->bindParam(':bank_id', $bank_id, PDO::PARAM_STR); 
        $stmt->bindParam(':bank_merchant_id', $bank_merchant_id, PDO::PARAM_STR); 
        $stmt->bindParam(':bank_response_code', $bank_response_code, PDO::PARAM_STR); 
        $stmt->bindParam(':msg', $msg, PDO::PARAM_STR); 
        $stmt->bindParam(':curreny', $curreny, PDO::PARAM_STR);

        $stmt->bindParam(':customer_id', $customer_id, PDO::PARAM_STR);         
        $stmt->execute();
        var_dump($stmt->debugDumpParams);
        if($stmt->rowCount()) {
          echo 'Added';
        }else{
          echo 'No';
        }
        exit;
    }catch (PDOException $e) {
        var_dump($e); exit;
    }

Tghough I am always getting output as

NULLED Added

the data is not updated actually ! Whats wrong . The customer id AMI16025 exists in database

you call beginTransaction() but don't commit() so PDO automatically does a rollback()

From manual

if you didn't explicitly commit the transaction, then it is assumed that something went awry, so the rollback is performed for the safety of your data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM