删除最后一行添加的mysql


Delete last row added Mysqli

我一直在试图找到一些可能有助于我的情况,但没有发现任何东西。我正在处理贝宝交易,并已设置在这样一种方式,即数据被添加到提交之前的数据库。我希望添加的最后一行被删除,如果支付状态不是"完成"

$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)