【问题标题】:PHP incrementing a varPHP增加一个var
【发布时间】: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


【解决方案1】:

这是因为每次您向数据库中添加一个盘子时,您都在运行相同的代码。

这个:

$occupiedNumberOfSpots = 0;

也应该取自 db。我想应该是这样的:

$totalNumberOfSpots = 100; // for example 
$occupiedNumberOfSpots = $row['parking_spots']; // taken from db

代替:

$totalNumberOfSpots = $row['parking_spots'];  
$occupiedNumberOfSpots = 0;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2012-06-18
    • 2015-12-17
    • 2016-10-02
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    相关资源
    最近更新 更多