gpt4 book ai didi

php - ipn 中的 PDO 不插入

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:34 25 4
gpt4 key购买 nike

嘿,我在 ipn 过程中在我的数据库中插入自定义数据时遇到问题,这是这种情况,我正在使用 http_build_query 发送数据:

require_once 'classes/Crypt.php';
$crypt = new Crypt();
$crypt->Mode = Crypt::MODE_HEX;
$crypt->Key = '!@#$%&*()_+?:';

$test = array('cmd'=>'_xclick',
'business'=>'my_email',
'notify_url'=> $home_url.'/ipn/ipn.php',
'item_name'=>'name',
'amount'=>'1.00',
'currency_code'=>'USD',
'lc'=>'US',
'custom'=>$crypt->encrypt(serialize(array("username" => $username))));


$url = "https://www.sandbox.paypal.com/cgi-bin/webscr?".http_build_query($test);
header("Location:".$url);
exit();

我使用 PDO bindParam 插入数据的 ipn 脚本:

require_once '../classes/Crypt.php';

$crypt = new Crypt();
$crypt->Mode = Crypt::MODE_HEX;
$crypt->Key = '!@#$%&*()_+?:';

$custom = unserialize($crypt->decrypt($_POST["custom"]));

$username = $custom['username'];

try
{
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare("INSERT INTO products(product_name)
VALUES(:productName)");
$stmt->bindParam(':productName', $productName);

$productName = $username;

$stmt->execute();
}
catch(PDOException $exception)
{
$body .= "Fail: " . $exception->getMessage() . "\n";
}

没有插入,但我在日志中收到此错误:

Fail: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'product_name' cannot be null

数据确实已发送,我在定向到 paypal 之前使用 echo 检查了它。我的餐 table 产品:

CREATE TABLE products (
id int(11) NOT NULL auto_increment,
product_name varchar(55) NOT NULL,

PRIMARY KEY (id),
UNIQUE KEY product_name (product_name)
);

目前我真的不知道为什么查询没有执行,有人知道这个具体问题或我的错误在哪里吗?感谢帮助!问候!

最佳答案

$stmt = $dbh->prepare("INSERT INTO products(product_name)
VALUES(:productName)");
$stmt->bindParam(':productName', $productName);

$productName = $username;

您在 $productName 为 NULL 时绑定(bind)它,然后在绑定(bind)后为其赋值。绑定(bind)前给 productName 赋值:

$productName = $username;

$stmt = $dbh->prepare("INSERT INTO products(product_name)
VALUES(:productName)");
$stmt->bindParam(':productName', $productName);

编辑:

//check $username
var_dump($username);
$test = array('cmd'=>'_xclick',
....
'custom'=>$crypt->encrypt(serialize(array("username" => $username))));
....

...
$custom = unserialize($crypt->decrypt($_POST["custom"]));
//check $custom
var_dump($custom);

关于php - ipn 中的 PDO 不插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com