检查变量是否返回“成功”

I have a script that I use to get paid. I want to run a SQL query when the transaction status returns "success".

How can I do this?

With the following code I am checking the transaction status:

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>';
?>

The var_dump returns the following:

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

I am using the following method:

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());
    }
}

I want to know how I can check if the transactionstatus is "success" and build a SQL query that inserts data to the database if the transactionstatus is "success"

Update 1:

The following is not working 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);
                }

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

You could run the SQL query immediately before returning success in class.php. In fact, you can check to ensure there were no SQL errors (after running your query) before returning success.

EDIT: Based on your new information, it looks like you're trying to do this:

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());
    }
}

If you're trying to execute your database code inside the array constructor like that, it isn't going to work. What you need to do is execute your database code first, then return conditionally based on the result of the database query. The code below hasn't been tested, but it's a better representation of what your code should look like structurally:

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());
    }
}

I believe you should insert status after response and check if response is success.

<?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);
        }
    }
?>