我有点想寻找解决方案。

我需要检查表单中的输入数据$ coupon(在“ post”操作之后)是否等于行$ Coupon中名为Serial的现有MySQL表中的数据。如果这两个条目匹配,我需要删除表“ Serial”中的一个(删除自)。在另一种情况下,我需要显示一个错误,例如echo“您输入的优惠券号码无效”。

现在我有以下代码,但它不执行检查。

$query4="SELECT EXISTS(SELECT 1 FROM serial WHERE Coupon='$coupon')";
$result = mysql_query($query4);

if($result){
    echo "Bravo!";
}
else{
    "The coupon number you've entered is invalid";
    exit;
}
// Delete data from mysql
$query2="DELETE FROM serial WHERE Coupon = '$coupon'";
$result = mysql_query($query2);

// if successfully insert data into database, displays message "Successful".
if($result){
echo "Some info";
}
else {
die(mysql_error());
}


非常感谢任何想法!

最佳答案

您已经为自己创建了比赛条件。优惠券在运行SELECT语句时存在的事实并不意味着在运行delete语句时将存在,尤其是在这是Web应用程序或多线程/多进程的情况下。

DELETE语句从tbl_name中删除行,并返回已删除行数的计数。可以通过调用ROW_COUNT()函数获得此计数。

无条件运行DELETE,然后使用ROW_COUNT来查看它是否在那里并被删除或从未在那里。

10-02 05:41
查看更多