2016-08-31 3 views
1

У меня есть данные и запрос, как показано ниже:Невозможно обновить таблицу с помощью 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|[email protected]|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

данные не обновляются на самом деле! Что не так . Идентификатор клиента AMI16025 существует в базе данных

+0

Установили ли вы режим PDO в режим исключения? Если нет, вам придется вручную проверить сообщение об ошибке после выполнения запроса –

+0

Я не вижу commit() –

ответ

0

вы называете beginTransaction() но не commit() так PDO автоматически делает rollback()

С ручной

, если вы четко не совершить сделку, то предположил, что что-то пошло не так, поэтому откат выполняется для безопасности ваших данных.

Смежные вопросы