Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP-MYSQL查询中使用IF语句_Php_Mysql_If Statement - Fatal编程技术网

如何在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',

目前我正在做关于酒店管理系统的最后一年项目。现在我一直坚持在PHP MYSQL查询中使用IF语句。我在
reservation
表下创建了名为
roomtype
roomprice
的列。情况如下:

  • 如果客人在
    roomtype
    上选择了单人房,它会自动显示 价格在
    roomprice
    上。假设价格是100美元

  • 那么如果客人选择了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中的值以匹配。