我已经构建了这个ajax函数,我希望更新数据库中的两个字段,如果用户决定更改它们,我有这个代码,我正在打印酒店房间(学校作业)及其当前信息,ID,诸如此类:
<?php
include('php/connect.php');
$chquery = "SELECT * FROM rooms";
$chresult = mysqli_query($conn, $chquery);
while($chrow = mysqli_fetch_array($chresult)){
echo "<div class='edit_roomRow'>";
echo "<h1> Rum " . $chrow['ID'] . "</h1>";
echo "<form>";
echo "Rumsnummer:<br> <input id='c-roomnumber' type='text' value = '" . $chrow['ID'] . "' placeholder='" . $chrow['ID'] . "'><br>";
echo "Beskrivning:<br> <input id='c-description' type='text' value = '" . $chrow['Description'] . "'placeholder='" . $chrow['Description'] . "'>";
echo "</form>";
echo "<br>";
echo "</div>";
echo "<div class='btn btn-warning change-btn' data-value='". $chrow['ID'] . "'style='float: right; margin-top: 100px;'>Ändra</div>";
echo "<hr/>";
}
mysqli_free_result($chresult);
mysqli_close($conn);
?>
这里没有错,所有价值观都是正确的。 然后,这里是我从这个表单发送信息的ajax:
<script type="text/javascript">
$(".change-btn").click(function(){
var id = $(this).attr("data-value");
var description = $("#c-description").val();
var roomnumber = $("#c-roomnumber").val();
//Call to ajax
$.ajax({
method:"GET",
url: "php/changepost.php",
data:{ id: id, description: description, roomnumber: roomnumber },
success: function(){
$(this).val("");
$("#c-description").val("");
$("#c-roomnumber").val("");
//Reload specific div with rooms, avoid full page reload
$(".changerooms").load(location.href + " .changerooms");
}
})
})
</script>
为了确保从PHP发送所有值(来自按钮的正确ID,描述和房间号),我在ajax文件的末尾提醒他们,所有值都正确。
然后在这里我尝试使用新值更新数据库:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
include('connect.php');
if(isset($_GET['id'])){
$changequery = "UPDATE rooms SET ID = $_GET['roomnumber'], Description = $_GET['description'] WHERE ID = $_GET['id']";
//Perform $changequery
mysqli_query($conn, $changequery);
}
mysqli_close($conn);
?>
我在这里看不到任何东西,但我对AJAX很新,所以如果你看到一些看似错误的东西,我会很高兴能得到任何帮助.. :)
答案 0 :(得分:1)
您的字符串语法错误。如果不在变量周围使用卷曲语法,则不得在数组索引周围加上引号。您还需要在SQL中使用字符串值的引号。
$changequery = "UPDATE rooms SET ID = $_GET[roomnumber], Description = '$_GET[description]' WHERE ID = $_GET[id]";
最好学会使用mysqli_stmt_bind_param
准备好的查询,以避免SQL注入问题。
$stmt = mysqli_prepare($conn, "UPDATE rooms SET ID = ?, Description = ? WHERE ID = ?");
mysqli_stmt_bind_param($stmt, "isi", $_GET['roomnumber'], $_GET['description'], $_GET['id']);
mysqli_stmt_execute($stmt);