dqsh30374 2016-06-25 03:18
浏览 44

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

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
        );
  • 写回答

2条回答 默认 最新

  • dongshuo5101 2016-06-25 03:26
    关注

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

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题