如何从ajax后序列化更新数据库?php、jquery、javascript

agyaoht7  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(316)

我想使用更新查询从serialize更新我的rooms表。但这并不能挽救一切。它只更新表的第一行。
mydatabase中的我的房间列表,房间表:

1   Room1   Regular 

2   Room2   Standard

3   Room3   Deluxe

索引.php:

<script>
  $(document).ready(function () {
  $('#button').click(function(){
        var serialize = $('#rooms').serialize();

         $.ajax({
           url: 'save.php',
           data: serialize,
           type: "POST",
           success: function(json) {
              alert('saved');
                }
                }); 
 }); 
 });     
 </script>

 <?php
 $connect = mysqli_connect('localhost', 'root', '', 'mydatabase');
 $sql = "SELECT * FROM rooms";  
 $result = mysqli_query($connect, $sql);
 while($row = mysqli_fetch_array($result))  
 {
 $room_id = $row['room_id'];
 $room_type = $row['room_type'];
 $room_desc = $row['room_desc'];
 ?>
 <button id="button"> SAVE </button>
 <form id="rooms">
 <input type="text" name="room_id[]" value="<?php echo $room_id;?>" />
 <input type="text" name="room_type[]" value="<?php echo $room_type;?>" />
 <input type="text" name="room_desc[]" value="<?php echo $room_desc;?>" />
 </form>
 <?php
 }
 ?>

保存.php:

<?php
 $connect = mysqli_connect('localhost', 'root', '', 'rooms');

 for($i = 0; $i < count($_POST['room_id']); $i++)
 {
 $room_id = mysqli_real_escape_string($connect, $_POST['room_id'][$i]);
 $room_type = mysqli_real_escape_string($connect, $_POST['room_type'][$i]);
 $room_desc = mysqli_real_escape_string($connect, $_POST['room_desc'][$i]);

 if (empty(trim($room_id))) continue;

 $sql = "UPDATE `rooms` SET `room_type`= '$room_type',`room_desc`= '$room_desc'  WHERE `room_id` = '$room_id'"; // ---- it doesn't updates all. it only update the first one.

 mysqli_query($connect, $sql);
 }
 ?>

我还尝试使用insert into query,它工作正常并保存所有数据,但使用update时,只更新第一行。请帮帮我。

wqlqzqxt

wqlqzqxt1#

我真的很抱歉这个愚蠢的问题。我已经找到答案了,否则我应该说我的错误。
我发现了 <form id="rooms"></form> 必须将while语句放在外部才能获取所有数据。
我现在可以使用更新查询了。:)

相关问题