Php 逻辑I'有什么问题吗;你在这个条件语句中应用了什么?
这基本上是paypal IPN的一部分,我正在检查发送的订单ID(txn_ID)是否已经存在。如果发生了,我不希望任何事情发生,如果没有发生,那么就发布到数据库。即使它存在,它似乎也会发布到数据库中,为什么要这样做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
$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
。这是一个很好的建议!