这基本上是paypal IPN的一部分,我正在检查发送的订单ID(txn_id)是否已经存在。如果确实如此,我不希望发生任何事情,如果没有,则发布到数据库。它似乎发布到数据库,即使它存在,为什么它这样做?
$receiver_email = $_POST['receiver_email'];
$payment_status = $_POST['payment_status'];
$txn_id = $_POST['txn_id'];
$txn_sql =" SELECT * FROM test where item2 = $txn_id ";
$order_num = mysqli_query($Connection, $txn_sql);
$num_rows = mysqli_num_rows($order_num);
if ($num_rows > 0){
$unique = 'no';
}
else {
$unique = 'yes';
}
if ($receiver_email == "seller@paypalsandbox.com" && $payment_status == "Completed" && $unique =="yes" ) {
$Connection = mysqli_connect("localhost", "user", "pw", "db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO test (item1, item2)
VALUES ('$txn_id', '$unique')";
$do = mysqli_query($Connection, $sql);
我得到了,我一直发送的值为“是”的第2项,如果它存在,它不应该发布吗?我哪里错了?
答案 0 :(得分:1)
首先,确保item2
字段是一个整数,因为您在没有'
的情况下进行比较。接下来,尝试var_dump($num_rows)
并查看实际结果,甚至是var_dump($_POST)
。
如果确实是> 1
,请尝试echo $txn_sql
,复制sql
语句并将其运行到您的实际数据库(使用navicat
或其他内容)并查看是否您的数据库有问题。
点击display_errors
或php.ini
中的ini_set('display_errors", "on")
选项可能有助于检查您是否存在连接问题或其他错误。
我正在回答此问题,以帮助您调试问题。希望有所帮助:)