【问题标题】:Uncaught TypeError: : Return value must be of type array, bool returned [duplicate]未捕获的TypeError::返回值必须是数组类型,返回布尔值[重复]
【发布时间】:2021-07-19 01:07:53
【问题描述】:

我有一个表格,用户填写以将金额添加到他们的帐户,在该表格中,他们将选择一个网关(Paypal、完美货币等)输入一个金额,然后将其发送到我设计的功能命令进行存款。提交表单时,将发送到控制器,然后通过选择正确的 API 来创建流程以继续现在抛出此错误。需要任何人帮助解决此问题,在此先感谢

错误

Fatal error: Uncaught TypeError: gatewayinfo(): Return value must be of type array, bool returned in C:\xampp\htdocs\model\gateways-model.php:86 Stack trace: #0 

网关模型

function gatewayinfo($gateway_id): array
{
    try {
        $db = createConnection();
        $sql = 'SELECT * FROM ays_gateways
                WHERE gatewayID = :gatewayID';
        $stmt = $db->prepare($sql);
        $stmt->bindValue(':gatewayID', $gateway_id, PDO::PARAM_INT);
        $stmt->execute();
        $gatewayinfo = $stmt->fetch(PDO::FETCH_ASSOC); //line 86
        $stmt->closeCursor();
        return $gatewayinfo;
    } catch (PDOException $e) {
        exit($e->getMessage()) ;
        return [];
    }
}

支付功能

function getPaymentForm('51', gateway_id) {
    $gatewayInfo = gatewayinfo($gateway_id); ;
    $gateway = $gatewayInfo['name'];
    if($gateway == "PayPal") { return PF_PayPal('51',$gateway_id); }
    elseif($gateway == "Perfect Money") { return PF_PerfectMoney('51',$gateway_id); }
    else { return 'Something was wrong. Please try again.'; }
}

【问题讨论】:

  • 检查您设置 PDO 连接的代码。我敢打赌,您在创建 PDO 对象后还没有启用异常。至于您的代码返回的错误:您的查询失败。我将我如何知道这一点留给读者作为练习。 (提示:首先要弄清楚为什么你有一个布尔值而不是一个数组)
  • 问题的形式是对未来的用户几乎没有用处或没有用处。一旦问题被理解,过于笼统的、常见的错误消息与单独的代码和最小的修复建议相结合将不会为未来的访问者带来有用的贡献。相反,未来的访问者会因过多的信息而分心,因为太多的问题和答案确实与对错误消息的搜索相匹配。

标签: php mysql pdo


【解决方案1】:

我认为问题出在 getPaymentFrom() 函数参数中。您没有正确声明 gateway_id 变量。这就是函数返回布尔值的原因。将 $ 符号放在 gateway_id 前面。按照下面的代码。

function getPaymentForm('51', $gateway_id) {
    $gatewayInfo = gatewayinfo($gateway_id); ;
    $gateway = $gatewayInfo['name'];
    if($gateway == "PayPal") { return PF_PayPal('51',$gateway_id); }
    elseif($gateway == "Perfect Money") { return PF_PerfectMoney('51',$gateway_id); }
    else { return 'Something was wrong. Please try again.'; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 2016-03-15
    • 1970-01-01
    • 2017-02-25
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多