你好我们从一个名为Eppl
的变量中减去一个单位,它驻留在数据库中,这是完美的。但是我添加了一个条件,即在减法发生之前变量Eppl
的值必须大于0。我的代码如下:
$id = $_GET["id"];
$result = $mysqli->query("SELECT `CreatedBy` AND `Eppl` FROM `events` WHERE `Eid` = '$id'");
$row = $result->fetch_assoc();
$sessionid = $row['CreatedBy'];
$notlesszero = $row['Eppl'];
$zero = 0;
//echo $result;
session_start();
if ((!($_SESSION['login_user'] == $sessionid)) && ($notlesszero>0)){
$mysqli->query("UPDATE `events` SET `Eppl` = `Eppl` - 1 WHERE `Eid` = '$id'");
$mysqli->query("INSERT INTO `eventusers` (EventID, UserID) VALUES ('{$id}', '{$_SESSION['login_user']}')");
header("location:view.php");
//}
}
if分支在没有第二个条件的情况下工作$notlesszero>0
...
这有什么问题?
感谢您的帮助
答案 0 :(得分:3)
为什么不在UPDATE
上添加条件,而不是查询数据库以获取字段的值然后检查它?
$mysqli->query("UPDATE `events` SET `Eppl` = `Eppl` - 1 WHERE `Eid` = '$id'");
到
$mysqli->query("UPDATE `events` SET `Eppl` = `Eppl` - 1 WHERE `Eid` = '$id' AND `Eppl` > 0");
答案 1 :(得分:1)
向您添加Eppl
后,第一个查询错误。要选择的字段不应由AND
分隔。所以
SELECT `CreatedBy` AND `Eppl` FROM
应该是
SELECT `CreatedBy`, `Eppl` FROM
通过在执行查询后检查错误信息,或者至少在更改查询后检查$row
,可以捕获这些内容。 :-P