繁体   English   中英

无法使用PDO更新表

[英]Unable to update table using PDO

我有一个数据和查询如下:

$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我总是得到输出

NULLED Added

实际上数据没有更新! 怎么了 。 客户ID AMI16025存在于数据库中

你调用beginTransaction()但不commit()所以PDO自动进行rollback()

从手册

如果您没有显式提交事务,则会假定某些内容出错,因此会执行回滚以确保数据的安全性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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