Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 逻辑I'有什么问题吗;你在这个条件语句中应用了什么?_Php - Fatal编程技术网

Php 逻辑I'有什么问题吗;你在这个条件语句中应用了什么?

Php 逻辑I'有什么问题吗;你在这个条件语句中应用了什么?,php,Php,这基本上是paypal IPN的一部分,我正在检查发送的订单ID(txn_ID)是否已经存在。如果发生了,我不希望任何事情发生,如果没有发生,那么就发布到数据库。即使它存在,它似乎也会发布到数据库中,为什么要这样做 $receiver_email = $_POST['receiver_email']; $payment_status = $_POST['payment_status']; $txn_id = $_POST['txn_id']; $txn_sql =" SELECT * FRO

这基本上是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);

我得到了,我一直为item2发送的“yes”值,如果它存在,难道它根本不应该发布吗?哪里出错了?

首先,确保
item2
字段是一个整数,因为您在进行比较时没有使用
。接下来,尝试
var\u dump($num\u rows)
并查看实际结果,甚至
var\u dump($\u POST)

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

php.ini
ini\u集('display\u errors','on')
中打开
display\u errors
选项可能有助于检查您是否存在连接问题或其他错误


我回答这个问题只是为了帮助您调试您的问题。希望有帮助:)

您应该使用准备好的语句,因为您不过滤POST值
$txn\u id
(SQL注入)还有一个很大的帮助就是一直保持代码的简洁风格,不使用大写字母编写变量,也不使用小写字母,这里是空格,但这里不是…。我们不知道他是否在使用apache,你的意思是
php.ini
而不是
httpd.conf
。这是一个很好的建议!