我是PHP的新手,这实际上是我在该语言中的第一次构建。
我正在尝试使用 IPN工具将PayPal集成到网站中。这部分工作得很好但是当我在完成支付后尝试验证PayPal中的第二个POST
时,数据库会带回所需的结果,但是我已经分配了结果的customerID
变量没有填充因此第二个查询没有完成并且在那时失败了。我把它缩小到下面显示的部分,我只能认为while循环中有一些错误从记录集中获取值。第一个查询中的其他变量是从POST回来的PayPal
代码如下:
$query = "SELECT customer.cust_id FROM customer INNER JOIN transaction ON transaction.cust_id = customer.cust_id WHERE last_name = '".$surname."' AND email = '".$payer_email."' AND paypal_txn_id = '".$txnID."'";
$results = mysqli_query($dbc, $query);
if($results){
while($row = mysqli_fetch_array($results, MYSQLI_NUM)){
$custID = $row[0];
$_SESSION['customerID'] = $custID;
}
mysqli_free_result($results);
}
else{
//send an email to say that something went wrong
//end this code execution
exit();
}
$customerID = $_SESSION['customerID'];
$q = "SELECT * FROM transaction INNER JOIN customer ON customer.cust_id = transaction.cust_id WHERE customer.cust_id = ".$customerID." AND paypal_txn_id = '".$txnID."'";
$r = mysqli_query($dbc, $q);
if($r){
$array = mysqli_fetch_array($r, MYSQLI_ASSOC);
$stored_amount = $array['amount'];
$stored_paymentStatus = $array['payment_status'];
$stored_paypal_txn_id = $array['paypal_txn_id'];
$transaction_id = $array['trans_id'];
mysqli_free_result($r);
}
else{
//send an email to say that something went wrong
//end this code execution
exit();
}
我认为这可能是由于变量范围,但在阅读后我发现变量的范围在if语句内部不是问题。我将客户ID分配给会话变量,但如果我使用print_r($_SESSION)
,这也是空白。我尝试了MYSQLI_NUM
和MYSQLI_ASSOC
并获得了相同的结果。我只能假设这是一个愚蠢的错误,我无法看到,因为我在PHP方面非常环保并且已经盯着这段时间了一段时间了!
非常感谢您提供任何帮助。