我一直试图找到一些可能对我的情况有所帮助但却没有找到任何东西的东西。我正在处理paypal交易,并且已经设置了这样的方式,即在提交之前将数据添加到数据库中。如果付款状态不是“已完成”,我希望删除最后一行
$payment_status = isset($_POST['payment_status']) ? $_POST['payment_status'] : '';
include 'connect.php';
Insert in SQL as required
}
else {
echo "Payment Not completed";
}
显示在这里的SQL表:
http://jsfiddle.net/christa_mar/b7xpkk2p/
用于处理交易的代码可在以下链接中找到:Saving to database on payment succesful (paypal)
答案 0 :(得分:1)
Yous不应该只删除"最后一行"。它可以是来自任何事务的任何行。相反,您必须从插入中获取唯一ID,然后删除具有此特定ID的行。
答案 1 :(得分:0)
您不能简单地删除最后一行。因为,最后一行可以是任何状态。 “已完成”或“未完成”。
您所做的是,保存表格中每笔交易的状态。
如果付款状态为“已完成”,则表示没问题 如果付款状态为“未完成”,请删除具有“未完成状态”的行
DELETE FROM TableName WHERE PaymentStatus='Not Completed'
OR
mysqli_query($Con, "INSERT INTO TableName(ColName1,ColName2) values('Huu', 'Haa')");
$LastInsertedID = mysqli_insert_id($Con);
您可以在if else部分中使用此$LastInsertedID
来删除该特定行。
DELETE FROM TableName WHERE IDcolName='$LastInsertedID'
答案 2 :(得分:0)
只选择最近的记录可能会导致问题,即几乎同时插入两条记录。一个可能在另一个之前完成,因此只需获取最近的条目可能会返回另一行(您不想要的)。
使用mysqli_insert_id
,您可以获取刚刚在上一个查询中插入的行的ID。然后,您可以使用它来删除您的行。
使用示例:
mysqli_query($conn, "INSERT INTO table values('', 'Hello')");
$last_id = mysqli_insert_id($conn);
//Delete where id = $last_id
答案 3 :(得分:-1)
这可能很有用:
DELETE FROM `bookings`
WHERE `bookingID` IN
(SELECT top 1 `bookingID` FROM `bookings` ORDER BY `bookingID` DESC)