我检查了所有参数,但是他们的数据正确,但我的查询没有更新表中的数据。
以下是代码:
public function updateRooms($capacity,$rent,$h_id,$t_rooms){
$conn=DB::connect();
for($i=1; $i<=$t_rooms; $i++){
$room_no=$i;
$sql= "UPDATE room SET ro_capacity='{$capacity[$i]}', ro_rent='{$rent[$i]}', ro_room_no='$room_no' WHERE h_id=".$h_id;
if($conn->query($sql) === TRUE){
$last_id = $conn->insert_id;
echo "New record created successfully.". $last_id;
}else{
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
}
答案 0 :(得分:0)
从UPDATE查询获取插入ID没有意义。它不会给你任何有用的东西。
此外,你应该使用准备好的陈述。
public function updateRooms($capacity,$rent,$h_id,$t_rooms){
$conn=DB::connect();
$sql= "UPDATE room SET ro_capacity=?, ro_rent=?, ro_room_no=? WHERE h_id=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("iiii",$ro_capacity,$ro_rent,$i,$h_id)
for($i=1; $i<=$t_rooms; $i++){
$ro_capacity = $capacity[$i];
$ro_rent = $rent[$i];
$stmt->execute();
echo "The record updated successfully";
}
}
正如您所看到的,mysqli几乎无法用于准备好的语句。这就是你必须使用PDO的原因:
$sql= "UPDATE room SET ro_capacity=?, ro_rent=?, ro_room_no=? WHERE h_id=?";
$stmt = $conn->prepare($sql);
for($i=1; $i<=$t_rooms; $i++){
$stmt->execute([$capacity[$i],$rent[$i],$i,$h_id]);
echo "The record updated successfully";
}
}