【发布时间】:2017-06-09 10:31:23
【问题描述】:
我正在构建一个停车应用程序,其中不同的用户有不同数量的停车位。此数字由管理员在数据库中设置。用户可以输入一个号码牌,然后该号码牌也将被添加到数据库中。我想要的是,当用户占据所有位置时,他将无法再插入任何车牌。
但是,现在我有以下代码:
if(isset($_POST['number_plate'])){
$numberPlate = $_POST['number_plate'];
$user_id = $_SESSION['id'];
$query = mysql_query("SELECT `parking_spots` FROM `login` WHERE `id` = ".$user_id." ");
$row = mysql_fetch_assoc($query);
$totalNumberOfSpots = $row['parking_spots'];
$occupiedNumberOfSpots = 0;
$sql = "INSERT INTO amsterdam (numberplate, user_id) VALUES ('$numberPlate','$user_id')";
if(mysql_query($sql))
{
echo 'numberplate added';
$occupiedNumberOfSpots++;
if($occupiedNumberOfSpots == $totalNumberOfSpots)
{
echo "There are no more spots avialable";
}
}
else
{
echo 'Something went wrong!';
}
}
但是当我回显 $occupiedNumberOfSpots 变量时,它会一直返回 1,并且每次添加车牌时都不会增加。
我该如何解决这个问题?
【问题讨论】:
-
PHP 是一种脚本语言;当脚本完成/页面加载时,变量将不复存在。如果您需要它持久化,您应该将它存储在例如数据库中。你应该阅读 sql injection。
-
我认为你遗漏了一些东西。每当有人提交触发您的代码的表单时,脚本就会从上到下执行。这意味着几件事。 1. 您正在设置 $occupiedNumberOfSpots = 0; 2. 脚本没有内存。 +1 用于 SQL 注入
-
if 在循环中?
-
您使用
$occupiedNumberOfSpots = 0;行在本地声明 numberOfSpot。尝试将其保存在数据库、文件或类中,而不是方法中。
标签: php if-statement increment var