0

我有一个正在开发的汽车租赁系统。当用户租车时,系统首先要检查可用汽车的数量是否大于0,如果是,则调整“AVAILABLE = AVAILABLE+1”(在MySQL跟踪汽车的表中),即意思是把车租给用户。另外,我正在尝试记录哪辆车去了哪个用户。所以我有另一个名为rentalrecords 的数据库表,它接收登录用户的用户名和租用汽车的ID 的值。现在,问题是,我的“IF-ELSE”部分没有按预期执行。

<div id="stylized" class="myform">
<form id="form" name="form" method="POST" action="renting.php" >
<h1>Rent a Car</h1>
<label>Car ID
<span class="small">eg. Enter 1 for Mer1</span>
</label>
<input type="text" name="ID" id="ID" />
<input type="submit" style="margin:30px 100px;" name="submit" value="Check-Out">
<div class="spacer"></div>

</form>
</div>

现在,renting.php这个表单的动作如下:

<?php
session_start();
if(!session_is_registered(theUSERNAME)){
header("location:customer_login.php");
}

mysql_CONNECT("xx", "xx", "xx") OR DIE("Unable to connect");
mysql_SELECT_DB("xx") OR DIE("Unable to select database");
$ID = $_POST['ID'];
$result = mysql_query("SELECT AVAILABLE FROM car WHERE ID='$ID'");

if(mysql_fetch_array($result)>0)
{
$query="UPDATE car SET AVAILABLE=AVAILABLE-1 WHERE ID='$ID'";
mysql_query($query);
$query = "insert into rentalrecords (USERNAME,ID,RENTED_ON) values ('$_SESSION[theUSERNAME]','$_POST[ID]',CURDATE())";
$result = mysql_query($query);
header("location: list_Clogged.php");
}
else
{
echo "<script>alert('The car you chose is currently unavailable!'); location.href='rent.php';</script>"; 
}
?>

即使我有 available=0,它仍然没有执行 else 部分,无论如何,它总是执行 IF 部分。ID 和 AVAILABLE 是我的名为“汽车”的 MySQL 表和出租记录表的属性,我只想插入这些值。我知道该脚本目前很容易被注入,但首先我想让事情正常工作!任何即时帮助将不胜感激。

4

2 回答 2

1

您正在尝试计算资源...

if(mysql_fetch_array($result)>0)

您需要获取结果,然后在这些结果中计算一个项目:

$res = mysql_fetch_assoc($result);

if($res[0]['AVAILABLE'] > 0)

注意 $res[0] 表示结果的第一行。您还可以使用 mysql_fetch_row 获取单个结果。

请记住,根本不应该使用 mysql_ 函数。考虑切换到 mysqli 或 PDO。此外,您需要清理输入。你只是盲目的接受$_POST['ID']

于 2013-01-10T01:27:41.813 回答
0

mysql_fetch_array 函数并没有像你想象的那样做;它返回一个数组,而不是单个值。

于 2013-01-10T01:25:40.860 回答