我在这个条件语句中应用的逻辑有什么问题吗?

时间:2014-07-04 08:27:35

标签: php

这基本上是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项,如果它存在,它不应该发布吗?我哪里错了?

1 个答案:

答案 0 :(得分:1)

首先,确保item2字段是一个整数,因为您在没有'的情况下进行比较。接下来,尝试var_dump($num_rows)并查看实际结果,甚至是var_dump($_POST)

如果确实是> 1,请尝试echo $txn_sql,复制sql语句并将其运行到您的实际数据库(使用navicat或其他内容)并查看是否您的数据库有问题。

点击display_errorsphp.ini中的ini_set('display_errors", "on")选项可能有助于检查您是否存在连接问题或其他错误。

我正在回答此问题,以帮助您调试问题。希望有所帮助:)