我一直在试图找到一些可能有助于我的情况,但没有发现任何东西。我正在处理贝宝交易,并已设置在这样一种方式,即数据被添加到提交之前的数据库。我希望添加的最后一行被删除,如果支付状态不是"完成"
$payment_status = isset($_POST['payment_status']) ? $_POST['payment_status'] : '';
include 'connect.php';
Insert in SQL as required
}
else {
echo "Payment Not completed";
}
SQL TABLES display HERE:
http://jsfiddle.net/christa_mar/b7xpkk2p/用于处理交易的代码在此链接中找到:在付款成功时保存到数据库(paypal)
你不应该只删除"最后一行"。它可以是来自any事务的any行。相反,您必须从insert中获取唯一id,然后删除具有该特定id的行。
只选择最近的记录可能会导致问题,即如果两个记录几乎同时插入。一个可能在另一个之前完成,因此简单地获取最近的条目可能会返回另一行(这是您不希望看到的)。
使用mysqli_insert_id
,您可以获得刚刚在前面查询中插入的行的id。然后,您可以使用它来删除您的行。
使用例子:
mysqli_query($conn, "INSERT INTO table values('', 'Hello')");
$last_id = mysqli_insert_id($conn);
//Delete where id = $last_id
不能简单地删除最后一行。因为,最后一行可以是任何状态。"已完成"或"未完成"
你要做的是,在你的表中保存每一个事务的状态。
如果付款状态为'completed',则OK。
如果付款状态为"未完成",则删除具有"未完成状态"的行
DELETE FROM TableName WHERE PaymentStatus='Not Completed'
或
mysqli_query($Con, "INSERT INTO TableName(ColName1,ColName2) values('Huu', 'Haa')");
$LastInsertedID = mysqli_insert_id($Con);
您可以使用此$LastInsertedID
,在您的if else部分中删除特定的行。
DELETE FROM TableName WHERE IDcolName='$LastInsertedID'
这可能有用:
DELETE FROM `bookings`
WHERE `bookingID` IN
(SELECT top 1 `bookingID` FROM `bookings` ORDER BY `bookingID` DESC)