首页 > 解决方案 > 数据未存储在数据库中

问题描述

我正在开发一个小表格,用户可以在其中使用 PayPal 付款进行注册。但问题是付款成功后用户信息没有存储在数据库中。这是插入的代码

$db = new mysqli($dbConfig['host'], $dbConfig['username'], $dbConfig['password'], $dbConfig['name']);

// Assign posted variables to local data array.
$data = [
    'item_name'        => $_POST['item_name'],
    'item_number'      => $_POST['item_number'],
    'payment_status'   => $_POST['payment_status'],
    'payment_amount'   => $_POST['mc_gross'],
    'payment_currency' => $_POST['mc_currency'],
    'txn_id'           => $_POST['txn_id'],
    'receiver_email'   => $_POST['receiver_email'],
    'payer_email'      => $_POST['payer_email'],
    'custom'           => $_POST['custom'],
];

if(verifyTransaction($_POST) && checkTxnid($data['txn_id'])) {
    if(addPayment($data) !== FALSE) {
    }
}


function addPayment($data)
{
    global $db;
    if(is_array($data)) {
        $stmt = $db->prepare('INSERT INTO `payments` (txnid, payment_amount, payment_status, itemid, payer_email) VALUES( ?, ?, ?, ?, ?)');
        $stmt->bind_param(
            'sdsss',
            $data['txn_id'],
            $data['payment_amount'],
            $data['payment_status'],
            $data['item_number'],
            $data['payer_email']
        );
        $stmt->execute();
        $stmt->close();

        return $db->insert_id;
    }

    return FALSE;
}

标签: phpmysqlibindparammysql-insert-id

解决方案


从付款 INSERT INTO 中删除单引号payments并将此 itemid 更改为上表值中的 item_number。


推荐阅读