【问题标题】:Update statement not working properly and changes the other records更新语句无法正常工作并更改其他记录
【发布时间】:2016-03-16 11:57:35
【问题描述】:

我想知道为什么每当我保存编辑的记录时,我的更新语句都会更改所有其他记录的场地类型。

我已经为这个更新声明工作了很长一段时间,但我无法让它工作。如果你们能在这方面帮助我,那就太好了。

感谢您的帮助! :)

<body>
    <head>
        <script src="js/jquery.js"></script>
        <script src="js/bootstrap.min.js"></script>
        <script src="js/smoothscroll.js"></script>
        <script src="js/resetOnClick.js"></script>

        <link href="css/bootstrap.min.css" rel="stylesheet"/>
        <link href="css/styles.css" rel="stylesheet"/>  
        <link href="css/notifbox.css" rel="stylesheet"/>
    </head>

    <center><label class="control-label" style="font-size:30px">Reservation</label></center>
    <center><label class="control-label" style="font-size:15px">Edit Record</label></center>
    <br/>
    <br/>

    <?php
    $id = isset($_GET['id'])? $_GET['id'] : "";




        include('config/config1.php');

        $sel = "SELECT idReservation, venue.venue_type, reservation.reservation_date, reservation.reservation_time
        FROM venue
        INNER JOIN reservation ON reservation.Venue_idVenue = venue.idVenue where idReservation = '$id';";
        $rsvtn = isset($_POST['idReservation']);
        $query = mysqli_query($conn,$sel);

        while($detail = mysqli_fetch_array($query))
        {   
            $rid = $detail['idReservation'];
            $ven = $detail['venue_type'];
            $res_d = $detail['reservation_date'];
            $res_t = $detail['reservation_time'];
    ?>

    <form class="form-horizontal form-label-left" method="post">

        <div class="form-group">
                <!--BACK Button-->
                <a href="Reservation Records.php" class="col-md-6 col-md-offset-3" style="font-size:20px">Back</a>
                <!--BACK Button-->
        </div>
        <!--<input type="hidden" name="submitted" value="true"/>-->
            <div class="item form-group">
                <label class="control-label col-md-3 col-sm-3 col-xs-12">Venue<span class="required">*</span></label>
                    <div class="col-md-6 col-sm-6 col-xs-12">
                        <input id="venue_type" data-content="<?php echo $ven;?>" class="form-control col-md-7 col-xs-12" name="venue_type" placeholder="Venue" required="required" type="text" value="<?php echo $ven;?>">
                    </div>          
            </div>

            <div class="item form-group">
                <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Reservation Date<span class="required">*</span>
                </label>
                <div class="col-md-6 col-sm-6 col-xs-12">
                    <input id="reservation_date" data-content="<?php echo $res_d;?>" class="form-control col-md-7 col-xs-12" name="reservation_date" placeholder="Reservation Date" required="required" type="date" value="<?php echo $res_d;?>">
                </div>
            </div>

            <div class="item form-group">
                <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Reservation Time<span class="required">*</span></label>
                <div class="col-md-6 col-sm-6 col-xs-12">
                    <input id="reservation_time" data-content="<?php echo $res_t;?>" class="form-control col-md-7 col-xs-12" name="reservation_time" placeholder="Reservation Time" required="required" type="time" value="<?php echo $res_t;?>">
                </div>
            </div>



            <div class="ln_solid"></div>
            <div class="form-group">
                <div class="col-md-6 col-md-offset-3">
                    <input type="hidden" name="updRsvtn" value="<?php echo $detail['idReservation'];?>">
                    <input type="submit" class="btn btn-primary submits" value="Save Edited" onClick="Reservation Records.php" >
                </div>
            </div>  
            <?php
        } 

    ?>
    <?php
    if(isset($_POST['updRsvtn']))
        {   
            include('config/config1.php');

            $ven = $_POST['venue_type'];
            $res_d = $_POST['reservation_date'];
            $res_t = $_POST['reservation_time'];

            if(!mysqli_query($conn,"UPDATE reservation, venue SET venue_type = '$ven', reservation_date = '$res_d', reservation_time = '$res_t' WHERE idReservation = '$id'"))
            {
                echo "Not Queried: Wrong variables !";
            }   
            else
            {
                header("Location: Reservation Records.php");

            }
            mysqli_close($conn);
        }
    ?>  
    </form>

    <table class = "notif pos">
      <thead>
        <tr>
          <th><center/><b>*Old Record</b></th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><center/><b>Venue: <?php echo $ven;?></td>
        </tr>
        <tr>
          <td><center/><b>Reservation Date: <?php echo $res_d;?></td>
        </tr>
        <tr>
          <td><center/><b>Reservation Time: <?php echo $res_t;?></td>
        </tr>
      </tbody>
    </table>


</body>

【问题讨论】:

  • 你为什么在这里使用两个表UPDATE reservation, venue SET venue_type??
  • 您真的应该考虑通过至少用mysql_real_escape_string 包装任何参数来保护您的SQL 调用! php.net/mysql_real_escape_string
  • @mtrolle 关注您的链接并阅读其中的内容吗?
  • @mtrolle 谢谢,会的!

标签: php html mysqli


【解决方案1】:
   if its not working that means your their is not value in 
   $_GET['id']. then $id is having blank value that's why your query 
   update for all rows. 

if(isset($_POST['updRsvtn']))
    {   
        $id = isset($_GET['id'])? $_GET['id'] : "";
        $ven = $_POST['venue_type'];
        $res_d = $_POST['reservation_date'];
        $res_t = $_POST['reservation_time'];
       if(!mysqli_query($conn,"UPDATE reservation, venue SET 
        venue_type = '$ven', reservation_date = '$res_d', 
        reservation_time = '$res_t' WHERE idReservation = '$id'"))
        {
            echo "Not Queried: Wrong variables !";
        }   
        else
        {
            header("Location: Reservation Records.php");

        }
        mysqli_close($conn);
    }

【讨论】:

    【解决方案2】:

    您可以在查询中尝试 JOIN

    UPDATE reservation t1 
    JOIN venue t2 ON (t1.Venue_idVenue = t2.idVenue) 
    SET t1.reservation_date = '$res_d', 
        t1.reservation_time = '$rest_t', 
        t2.venue_type       = '$ven'
    WHERE t1.idReservation  = '$id'"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 2021-01-16
      • 2023-04-07
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多