如何在PHP-MYSQL查询中使用IF语句
目前我正在做关于酒店管理系统的最后一年项目。现在我一直坚持在PHP MYSQL查询中使用IF语句。我在如何在PHP-MYSQL查询中使用IF语句,php,mysql,if-statement,Php,Mysql,If Statement,目前我正在做关于酒店管理系统的最后一年项目。现在我一直坚持在PHP MYSQL查询中使用IF语句。我在reservation表下创建了名为roomtype和roomprice的列。情况如下: 如果客人在roomtype上选择了单人房,它会自动显示 价格在roomprice上。假设价格是100美元 那么如果客人选择了superior,价格是200 如果选择豪华,价格是300美元 下面是我要存储到数据库的代码 $link = mysql_connect('localhost', 'root',
reservation
表下创建了名为roomtype
和roomprice
的列。情况如下:
- 如果客人在
上选择了单人房,它会自动显示 价格在roomtype
上。假设价格是100美元roomprice
- 那么如果客人选择了superior,价格是200
- 如果选择豪华,价格是300美元
$link = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
mysql_select_db('hotel_reservation3') or die('Could not select database');
// Store query in variable
$query = "INSERT INTO reservation (user_id,fullname,contactno,passport,roomtype,roomprice,num_of_rooms,dor,dco,bookingdate,length_of_stay)
VALUES
(
'".$_SESSION['user_id']."',
'".$_POST['fullname']."',
'".$_POST['contactno']."',
'".$_POST['passport']."',
'".$_POST['roomtype']."',
'".$_POST['num_of_rooms']."',
'".$_POST['dor']."',
'".$_POST['dco']."',
sysdate(),
DATEDIFF(dco,dor)
)";
// Performing SQL query
$result = mysql_query($query)
or die('Query failed: ' . mysql_error());
//echo "Success inserting record!";
// Closing connection
mysql_close($link);
header("Location:reservation.php?success");
我正在使用来自表单的POST
方法。下面是表格的部分代码
<form action="" method="post">
<ul>
<li>
Full name*: <br>
<input type="text" name="fullname">
</li>
<li>
Contact No.: <br>
<input type="text" name="contactno">
</li>
<li>
IC/Passport*: <br>
<input type="text" name="passport">
</li>
<li>
Room Type*: <br>
<select name="roomtype" id="roomtype">
<option value="Single">Single</option>
<option value="Superior">Superior</option>
<option value="Deluxe">Deluxe</option>
</select>
</li>
<li>
Number of Rooms*:</li>
<input type="text" size="3" name="num_of_rooms">
<br>
<li>
Date of reservation*: <br>
<input type="text" size="12" id="dor" name="dor"/>
</li>
<li>
Check-out Date*: <br>
<input type="text" size="12" id= "dco" name="dco"/>
</li>
<input type="submit" value="Submit">
<input type="reset" value="Clear" >
<li>
<br>
<br>
<br>
<br>
<br>
<br>
</ul>
</form>
-
全名*:
-
联系电话:
-
IC/护照*:
-
房间类型*:
单身
优越的
豪华的
-
房间数量*:
-
预订日期*:
-
退房日期*:
-
有人知道这段代码吗?正如大家提到的,请保护您的SQL不被注入 你应该用PHP计算你的价格
if($_POST['roomtype'] == "deluxe"){
$roomprice = 300;
}else if($_POST['roomtype'] == "superior"){
$roomprice = 200;
}else{
$roomprice = 100;
}
// Store query in variable
$query = "INSERT INTO reservation (user_id,fullname,contactno,passport,roomtype,roomprice,num_of_rooms,dor,dco,bookingdate,length_of_stay)
VALUES
(
'".$_SESSION['user_id']."',
'".mysql_real_escape_string($_POST['fullname'])."',
'".mysql_real_escape_string($_POST['contactno'])."',
'".mysql_real_escape_string($_POST['passport'])."',
'".mysql_real_escape_string($_POST['roomtype'])."',
$roomprice,
'".mysql_real_escape_string($_POST['num_of_rooms'])."',
'".mysql_real_escape_string($_POST['dor'])."',
'".mysql_real_escape_string($_POST['dco'])."',
NOW(),
DATEDIFF(dco,dor)
)";
警告:您的代码极易受到sql注入攻击。您需要仔细阅读,以便不会像这里的代码那样造成更严重的攻击。另外,
mysql\u query
不应在新应用程序中使用。这是一个不推荐使用的接口,将从PHP的未来版本中删除。现代的替代方法与and类似,是一种更安全的组合查询的方法$\u POST
数据从不直接进入查询。你在这里所做的是非常危险的。我想鲍比·泰尔斯将无法预订房间(为了澄清,您的问题是如何根据选择的房间类型插入不同的房间价格?列的数量与sql查询中的值的数量不匹配,因此它将在sql查询中失败?mysql\u real\u escape\u string是否阻止sql注入?我尝试改为其他类型的房间(高级和豪华)但是它仍然是100oh,对不起,您需要在php中大写roomtypes(“高级”、“豪华”),或者您可以更改html中的值以匹配。