Javascript 如何使用Ajax在php while循环中运行SQL查询?

Javascript 如何使用Ajax在php while循环中运行SQL查询?,javascript,php,ajax,Javascript,Php,Ajax,我有一个数据表,它通过SQL拉入数据表。我想使用AJAX运行一个SQL查询,根据$id=$row[“id”]删除该行 Index.php: $link = mysqli_connect("localhost", "bradlyspicer_root", "", "bradlyspicer_ResellerDB"); $id = $_POST['id']; $deleterow = "DELETE FROM Offences WHERE id = ?"; if($stmt = mysql

我有一个数据表,它通过SQL拉入数据表。我想使用AJAX运行一个SQL查询,根据
$id=$row[“id”]删除该行


Index.php:

$link = mysqli_connect("localhost", "bradlyspicer_root", "", "bradlyspicer_ResellerDB");

$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
        echo $id;
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$( ".delbtn" ).click(function(){
    var itemID = $(this).attr("itemID");
    console.log(itemID)
    $.ajax({
        url:"functions.php", //the page containing php script
        data: { id: itemID}, // itemID passed as id
        type: "POST", //request type
        success:function(result){
            alert(result);
        },
        error: function() {
            alert('Error occured');
        }
    });
});
Functions.php:

$link = mysqli_connect("localhost", "bradlyspicer_root", "", "bradlyspicer_ResellerDB");

$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
        echo $id;
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$( ".delbtn" ).click(function(){
    var itemID = $(this).attr("itemID");
    console.log(itemID)
    $.ajax({
        url:"functions.php", //the page containing php script
        data: { id: itemID}, // itemID passed as id
        type: "POST", //request type
        success:function(result){
            alert(result);
        },
        error: function() {
            alert('Error occured');
        }
    });
});
Custom.js:

$link = mysqli_connect("localhost", "bradlyspicer_root", "", "bradlyspicer_ResellerDB");

$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
        echo $id;
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$( ".delbtn" ).click(function(){
    var itemID = $(this).attr("itemID");
    console.log(itemID)
    $.ajax({
        url:"functions.php", //the page containing php script
        data: { id: itemID}, // itemID passed as id
        type: "POST", //request type
        success:function(result){
            alert(result);
        },
        error: function() {
            alert('Error occured');
        }
    });
});
我找不到在Index.php到Functions.php的按钮中传递$id的位置,请解释

更新:由于更新脚本并尝试调试,我没有从错误中得到太多响应,该错误输出:


失败!错误:。

Index.php:

$link = mysqli_connect("localhost", "bradlyspicer_root", "", "bradlyspicer_ResellerDB");

$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
        echo $id;
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$( ".delbtn" ).click(function(){
    var itemID = $(this).attr("itemID");
    console.log(itemID)
    $.ajax({
        url:"functions.php", //the page containing php script
        data: { id: itemID}, // itemID passed as id
        type: "POST", //request type
        success:function(result){
            alert(result);
        },
        error: function() {
            alert('Error occured');
        }
    });
});
添加删除按钮标识符类
delbtn
和携带此行id的数据属性
data itemID

<?php
    while($row = mysqli_fetch_array($dataTablesResult)){
        $id = $row["id"];
        echo '
        <tr>
          <td>
            <button type="button" data-itemID="'.$id.'" class="delbtn btn btn-danger" >Remove</button>
          </td>
        </tr>
        ';
    }
?>
Custom.js:

$link = mysqli_connect("localhost", "bradlyspicer_root", "", "bradlyspicer_ResellerDB");

$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
        echo $id;
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$id = $_POST['id'];
$deleterow = "DELETE FROM Offences WHERE id = ?";
    if($stmt = mysqli_prepare($link, $deleterow)){ // $link being your connection
        mysqli_stmt_bind_param($stmt, "s", $id);
        mysqli_stmt_execute($stmt);
        echo 'success';
    } else {
        echo 'fail!';
        printf("Error: %s.\n", mysqli_stmt_error($stmt));
    }
$( ".delbtn" ).click(function(){
    var itemID = $(this).attr("itemID");
    console.log(itemID)
    $.ajax({
        url:"functions.php", //the page containing php script
        data: { id: itemID}, // itemID passed as id
        type: "POST", //request type
        success:function(result){
            alert(result);
        },
        error: function() {
            alert('Error occured');
        }
    });
});
单击带有
.delbtn
类的按钮时,运行jQuery函数。从数据属性捕获行id并将其存储为
$(this).data(“itemID”)
。然后在ajax请求中使用
data:{id:itemID}
发送数据

$(".delbtn").click(function(){
    itemID = $(this).data("itemID");
    $.ajax({
        url:"functions.php", //the page containing php script
        data: { id: itemID}, // itemID passed as id
        type: "POST", //request type
        success:function(result){
            alert(result);
        }
    });
});

我认为如果你改变这一行:

mysqli_stmt_bind_param($stmt, "s", $id);
这是一个:

mysqli_stmt_bind_param($stmt, "i", $id);

它可能会工作

如何调用
deleteRow()
?将其作为按钮上的数据属性,将单击处理程序绑定到获取该属性的按钮,并在ajax请求的
数据
属性中使用它。参见@PatrickQ,就像我的答案一样?)@不,我只是想看到OP再努力一点。在他们所拥有的和他们想要完成的之间有很多缺失,其中大部分可以通过简单的搜索找到。
mysqli_error
需要传递一个参数。使用
die(mysqli_error($conn))是一个非常糟糕的主意
在您的代码中,因为它可能会泄漏敏感信息。有关更多说明,请参阅本文:请注意,在Functions.php中,实际需要调用
deleteData()
。也许应该传递第二个数据元素(类似于“action”)来指示应该在文件中运行的代码。如果不知道文件的实际外观,很难说。事实上,名为Functions.php的文件可能不是直接调用此类文件的合适文件。但是,我认为,这个问题只是为了提问。@Dharman,感谢您指出,我想
intval()
在这种情况下可以很好地工作。对。我将再次编辑我的答案。我刚刚复制/粘贴了OP的代码,并根据OP的要求对其进行了调整,因此..感谢您对@LIGHT的详细解释,我花了一些时间思考这个问题,我注意到我加载了错误的代码,并且我的JS的src包含在标题中。因此,这也得到了解决。我收到一个警报,但数据没有被删除,警报框实际上没有显示任何内容。任何反馈都将不胜感激。好的,如果你写echo$id;直接在$id=$_POST['id']之后;将为您显示什么结果?为了了解是否正确地从客户端传递了id,或者没有显示任何内容,我已经尝试过了,请参阅其他线程中的注释$id=$id=$_POST['id'];我很抱歉,因为我没有注意到你在评论中写的。。很好,那么,这就是我现在需要的,所以告诉我,如果您直接在这行itemID=$(this.data(“itemID”)之后编写console.log(itemID);检查控制台以查看结果,并告诉我浏览器是否正确地从Dom元素检索itemID?如果是,则将此选项添加到ajax请求中:processData:false,并告诉我结果,并确保您的问题是使用$(this).data(“itemID”)而不是attr()函数,因此我建议Guest更改此行,如下==>var itemID=$(this).attr(“itemID”);谢谢你的更新。控制台日志仅包含以下内容:
[违规]“加载”处理程序在单击按钮时花费了871ms
。我已经在我的OP中更新了脚本以反映