【发布时间】:2013-08-08 14:44:28
【问题描述】:
我有那个 PDO 查询来检查我的数据库中是否存在重复的 txn_id。目前我的数据库有NO 记录。
每次我在paypal sandbox 上运行我的ipn 脚本时,我都会收到一封电子邮件说Duplicate Transaction ID. 我不明白。我的数据库中没有记录,所以交易应该已经消失了。
谁能发现错误。
$this_txn = $_POST['txn_id'];
$stmt = $conn->prepare("
SELECT txn_id FROM Transactions
WHERE txn_id =:txn_id LIMIT 1
");
$stmt->bindParam('txn_id',$this_txn);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($rows > 0) {
$messagerr = "Duplicate Transaction ID.";
mail("example@test.com", "Duplicate txn_id in the IPN system", $messagerr, "From: test@example.com" );
exit();
}
【问题讨论】:
-
$rows > 0这是不正确的,$rows 不是与零比较的数字,请参见:stackoverflow.com/questions/460010/… -
fetchAll不返回 int 以与> 0进行比较。 php.net/manual/en/pdostatement.fetchall.php -
使用
$stmt->num_rows -
您是 PHP 编码员还是刚刚找到了一个脚本?从您正在制作的其他答案和 cmets 来看,您似乎拿走了某人的剧本或在网上找到了它。检查行数的部分不是代码的唯一问题。
-
@N.B.这是第一次尝试创建购物车并且必须使用贝宝
IPN对 PDO 也有点陌生。