如果字段值大于或等于1(>= 1
),我想减少数据库表值。否则(如果它小于1)那么我想删除整个数据库记录,我的代码连续递减值,但是当它达到小于1时不删除记录。
我认为$Check
变量不包含Quantity
字段值,但我不确定:
使用MySQL
这是我的代码:
$Check = "SELECT Quantity FROM Cart WHERE ItemCode = '1'";
if($Check >= '1')
{
$Query = "UPDATE Cart SET Quantity = Quantity - 1 WHERE ItemCode = '1'";
mysql_query($Query);
}
else
{
$DeleteRow = "DELETE FROM Cart WHERE ItemCode = '1'";
mysql_query($DeleteRow);
}
mysql_close();
答案 0 :(得分:0)
试试这段代码:
<?php
$Check = "SELECT Quantity FROM Cart WHERE ItemCode = '1'";
$result = mysql_query($Check);
$row = mysql_fetch_assoc($result);
if($row['Quantity'] >= '1'){
$Query = "UPDATE Cart SET Quantity = ".$row['Quantity']." - 1 WHERE ItemCode = '1'";
mysql_query($Query);
}
else
{
$DeleteRow = "DELETE FROM Cart WHERE ItemCode = '1'";
mysql_query($DeleteRow);
}
mysql_close();
&GT;
如果你的代码运行正常,请尝试在程序方式上将其调整为mysqli扩展;不推荐使用mysql扩展名。
不推荐使用mysql扩展;您应该尝试使用mysqli或PDO,请点击此链接并做出选择:http://www.phptherightway.com/#databases
答案 1 :(得分:0)
您实际上从未运行查询以获取记录计数,您只需将查询字符串本身存储到$Count
变量中。这就是为什么它不断减少计数。
您可以运行查询然后提取数量列(运行查询的返回值是结果集,您仍然需要提取列值)但是也有问题,特别是数据可能会在检查和更新/删除(称为竞争条件)。
从数据库的角度来看,最好的办法是启动事务以确保整个事务是原子的。在交易中,您将拥有:
update cart set quantity = quantity - 1 where itemcode = '1'
delete from cart where quantity < 1 and itemcode = '1'
这可确保操作完全符合您的需要而不会出现竞争条件。