通过ajax发送值,SQL

时间:2016-10-19 20:01:35

标签: javascript php jquery ajax

我已经构建了这个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很新,所以如果你看到一些看似错误的东西,我会很高兴能得到任何帮助.. :)

1 个答案:

答案 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);