2016-06-25 15 views
0

私は支払うために使用するスクリプトを持っています。私はトランザクションのステータスが "成功"を返したときにSQLクエリを実行したい。変数が「成功」を返すかどうかをチェック

どうすればいいですか?私は、トランザクションの状態をチェックしています次のコードで

array(10) { 
    ["result"]=> 
    string(7) "Success" 
} 

を私は次のメソッドを使用しています:

checktransaction.php

<?php 
    require_once("class.php"); 
    header('Content-Type: text/html; charset=utf-8'); 
    $idealSEPA = new Ideal_SEPA(); 
    $transactionID = $_GET["trxid"]; 
    $requestTransactionStatus = $idealSEPA->requestTransactionStatus($transactionID); 
    echo '<pre>'; 
    var_dump($requestTransactionStatus); 
    echo '</pre>'; 
?> 

のvar_dumpは次返し

public function requestTransactionStatus($transactionID){ 
    if($transactionID == ""){ 
     return false; 
    } 
    try { 
     $response = $this->iDEALConnector->getTransactionStatus($transactionID); 
     $this->status = $response->getStatus(); 
     return array('status' => true, 'result' => $this->status); 
    } catch (SerializationException $ex){ 
     return array('status' => false, 'error_msg' => $ex->getMessage()); 
    } 
} 

は私がtransactionstatusが「成功」であるかどうかを確認することができます方法を知っているとtransactionstatusが「成功」

アップデート1である場合は、データベースにデータを挿入するSQLクエリを構築したいですが動作していません 戻り配列( 'status' => true、 session_start();

   $link = mysqli_connect("localhost", "root", "", "db");     
       if($link === false){ 
        die("ERROR: Could not connect. " . mysqli_connect_error()); 
       } 
       $sql = "UPDATE payment SET pay='2' WHERE id='1'"; 
       if(mysqli_query($link, $sql)){ 
        echo " "; 
       } else{ 
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
       } 

       // Close connection 
       mysqli_close($link); 
      'result' => $this->status 
     ); 
+0

この質問はJavascript(Javascriptのタグ付き)と何が関係していますか? – jfriend00

+0

Ummm ... '$ requestTransactionStatus ['result']'が値として "Success"を持つことを確信していますので、チェックしたい場合は、結果を比較するif/else文を作成してください... if($ requestTransactionStatus ['result'] == "Success"){} 'のようになります。これはあなたが探しているものですか? – Zeke

+0

あなたはデータベースとの接続を確立していますか、まだですか? – PacMan

答えて

0

class.phpで成功を返す直前にSQLクエリを実行できます。実際には、成功を返す前にSQLエラーがないことを確認することができます(クエリの実行後)。

EDIT:あなたがこれを行うにしようとしているように見える、新しい情報に基づいて:

public function requestTransactionStatus($transactionID){ 
    if($transactionID == ""){ 
     return false; 
    } 
    try { 
     $response = $this->iDEALConnector->getTransactionStatus($transactionID); 
     $this->status = $response->getStatus(); 
     return array('status' => true, 
      session_start(); 
      $link = mysqli_connect("localhost", "root", "", "db");     
       if($link === false){ 
       die("ERROR: Could not connect. " . mysqli_connect_error()); 
      } 
      $sql = "UPDATE payment SET pay='2' WHERE id='1'"; 
      if(mysqli_query($link, $sql)){ 
       echo " "; 
      } else{ 
       echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
      } 
    'result' => $this->status); 
    } catch (SerializationException $ex){ 
     return array('status' => false, 'error_msg' => $ex->getMessage()); 
    } 
} 

あなたがそのような配列コンストラクター内のデータベースのコードを実行しようとしている場合、それはにISN仕事に行く。実行する必要があるのは、まずデータベースコードを実行してから、データベースクエリの結果に基づいて条件付きで返すことです。以下のコードは、テストされていないが、それはあなたのコードは、構造的にどのように見えるかのより良い表現だ:

public function requestTransactionStatus($transactionID){ 
    if($transactionID == ""){ 
     return false; 
    } 
    try { 
     $response = $this->iDEALConnector->getTransactionStatus($transactionID); 
     $this->status = $response->getStatus(); 

    session_start(); 
    $link = mysqli_connect("localhost", "root", "", "db");     
     if($link === false) { 
     // Instead of dying here, you could even return an error like you do for serialization errors 
     return array('status' => false, 'error_msg' => "ERROR: Could not connect. " . mysqli_connect_error()); 
    } 
    $sql = "UPDATE payment SET pay='2' WHERE id='1'"; 
    if(mysqli_query($link, $sql)){ 
     return array('status' => true, 'result' => $this->status); 
    } else{ 
     // See my comment above 
     return array('status' => true, 'result' => "ERROR: Could not able to execute $sql. " . mysqli_error($link)); 
    } 
    } catch (SerializationException $ex){ 
     return array('status' => false, 'error_msg' => $ex->getMessage()); 
    } 
} 
+0

これは機能していません。私の最初の投稿で更新1を見てください – John

0

私はあなたが応答した後の状態を挿入し、応答が成功であるかどうかを確認すべきであると考えています。

<?php 
    require_once("class.php"); 
    header('Content-Type: text/html; charset=utf-8'); 
    $idealSEPA = new Ideal_SEPA(); 
    $transactionID = $_GET["trxid"]; 
    $requestTransactionStatus = $idealSEPA->requestTransactionStatus($transactionID); 

    if(!empty($requestTransactionStatus['result'])){ 
     if($requestTransactionStatus['result'] == "Success"){ 
      // Connect to the database 
      $link = mysqli_connect("localhost", "root", "", "db") or die("ERROR: Could not connect. " . mysqli_connect_error()); 
      $sql = "UPDATE payment SET pay='2' WHERE id='1'"; 
      if(mysqli_query($link, $sql)){ 
       echo " Payment status successfully updated. "; 
      } else { 
       echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
      } 
      // Close connection 
      mysqli_close($link); 
     } 
    } 
?> 
関連する問題