检查变量是否返回"success"



我有一个脚本,我用它来获得报酬。我想在事务状态返回"success"时运行SQL查询。

我该怎么做?

用下面的代码检查交易状态:

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返回以下内容:

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

我正在使用以下方法:

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是否为"success",并构建一个SQL查询,如果transactionstatus为"success",则将数据插入数据库

更新1:

下面不能工作返回数组('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
        );

我认为您应该在响应后插入状态,并检查响应是否成功。

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

可以在class.php中返回成功之前立即运行SQL查询。事实上,在返回成功之前,您可以检查以确保没有SQL错误(在运行查询之后)。

编辑:根据你的新信息,看起来你想这样做:
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());
    }
}

如果你想在数组构造函数中像这样执行数据库代码,那是行不通的。您需要做的是首先执行数据库代码,然后根据数据库查询的结果有条件地返回。下面的代码还没有经过测试,但是它可以更好地表示你的代码在结构上应该是什么样子:

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

最新更新