我想使用更新查询从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时,只更新第一行。请帮帮我。
1条答案
按热度按时间wqlqzqxt1#
我真的很抱歉这个愚蠢的问题。我已经找到答案了,否则我应该说我的错误。
我发现了
<form id="rooms"></form>
必须将while语句放在外部才能获取所有数据。我现在可以使用更新查询了。:)