Javascript 从JQuery Ajax中删除MySQL行

Javascript 从JQuery Ajax中删除MySQL行,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,你好! 我正试图通过PHP和AJAX请求删除MySQL数据库中的一行。 我认为使用$.ajax{}很容易,但由于某些原因,没有一行不被删除。。。 我有以下脚本(使用jQuery): 在PHP方面: <?php if (isset($_POST['delete'])) { $sql = "DELETE id FROM table1 WHERE id=".$_POST['delete']; $con = mysqli_connect("localhost", "root",

你好! 我正试图通过PHP和AJAX请求删除MySQL数据库中的一行。 我认为使用
$.ajax{}
很容易,但由于某些原因,没有一行不被删除。。。 我有以下脚本(使用jQuery):

在PHP方面:

<?php
if (isset($_POST['delete'])) {
    $sql = "DELETE id FROM table1 WHERE id=".$_POST['delete'];

    $con = mysqli_connect("localhost", "root", "", "myDB");
    if (!$con) {
        die("Connection failed: " . mysqli_error($con));
    }

    mysqli_query($con, $sql);

    mysqli_close($con);
}
?>

在控制台日志中,我看到以下消息:

要删除的行:215

(我要删除的行) 以及:

从数据库中删除行

然后帧清空,数据库再次加载,但我的行仍然在这里! 我用过这个帖子。 我不确定我是否错过了什么,但它不起作用。。。 谁能帮帮我吗? 提前非常感谢!:)

检查您的删除查询 从表中删除名称[WHERE子句]

更改

$sql = "DELETE id FROM table1 WHERE id=".intval($_POST['delete']);

我认为ajax中的“delete”参数没有将数据发布到url,这就是为什么这是我正在运行的代码

 Jquery :

   $.ajax({
    url: 'url',
    type: 'post',
    data: {
        'user_id': id


    },
    success: function (res) {
        $('#user_'+id).slideUp(500);
    }
  });

PHP :
  mysql_query("DELETE FROM tblusers WHERE user_id = $user_id");

删除查询语法应为

DELETE  FROM table1 WHERE id=2
试着像这样使用预先准备好的语句

<?php
if (isset($_POST['delete'])) {

$con = mysqli_connect("localhost", "root", "", "myDB") or die("Connection failed: " . mysqli_connect_error());

$stmt = $con->prepare("DELETE  FROM table1 WHERE id=?");

$stmt->bind_param('i',$_POST['delete']);

//The argument may be one of four types:

//i - integer
//d - double
//s - string
//b - BLOB
//change it by respectively 

$stmt->execute();

$row_count= $stmt->affected_rows;

if($row_count>0)
{
   echo "Deleted";

}else{

  echo "Not Deleted";
}
$stmt->close();
$conn->close();
}
?>

您的删除语法错误,请参阅,您还应该在php中使用准备好的语句。

函数删除记录(i){
console.log(“要删除的行:+i”);
$.ajax({
类型:“post”,
url:“../php/delete.php”,
数据:{删除:i},
数据类型:“json”,
编码:对,
成功:功能(数据){
如果(数据==“正常”){
log(“从数据库中删除的行”);
$(“#结果”).empty();
showWholeDB();
}否则{
控制台日志(数据);
}
}
});
}
delete.php

<?php
$con = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
}

if (isset($_POST['delete'])) {

    $idToDelete = intval($_POST['delete']);
    $sql        = "DELETE  FROM table1 WHERE id= ?";

    $stmt = $con->prepare($sql);
    $stmt->bin_param("i", $idToDelete);

    if ($stmt->execute()) {
        echo "ok";
    } else {

        echo "Error : " . $con->error;
    }
}
?>



尝试使用
print\u r()
die
进行调试。您将理解代码不可执行的原因。您应该使用
DELETE FROM table1,其中id=“.intval($\u POST['DELETE'])的可能重复项
防止SQL注入黑客攻击。@Adder这是如何防止SQL注入的?使用
jquery ajax错误函数
确认其路径是否正确。。您要发布数据的页面是url。您正在升级易受SQL注入攻击的代码。请重新考虑。@SimosFasouliotis I just sh查询中的错误是什么?只需将代码更改为使用
intval($\u POST['delete'])
,它将受到SQL注入的保护。@Adder谢谢。:)很抱歉回复太晚。很有效!非常感谢您的帮助!:)谢谢!这很有用:)
<?php
if (isset($_POST['delete'])) {

$con = mysqli_connect("localhost", "root", "", "myDB") or die("Connection failed: " . mysqli_connect_error());

$stmt = $con->prepare("DELETE  FROM table1 WHERE id=?");

$stmt->bind_param('i',$_POST['delete']);

//The argument may be one of four types:

//i - integer
//d - double
//s - string
//b - BLOB
//change it by respectively 

$stmt->execute();

$row_count= $stmt->affected_rows;

if($row_count>0)
{
   echo "Deleted";

}else{

  echo "Not Deleted";
}
$stmt->close();
$conn->close();
}
?>
function deleteRecord(i) {

    console.log("Line to delete: " + i);
    $.ajax({
        type:"post",
        url:"../php/delete.php",
        data: {delete : i },
        dataType : "json",
        encode : true,
        success:function(data){

           if(data == "ok"){
            console.log("Line deleted from the database.");
            $("#results").empty();
            showWholeDB();

           }else{
            console.log(data);
           }

        }
    });
}
</script>
<?php
$con = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
}

if (isset($_POST['delete'])) {

    $idToDelete = intval($_POST['delete']);
    $sql        = "DELETE  FROM table1 WHERE id= ?";

    $stmt = $con->prepare($sql);
    $stmt->bin_param("i", $idToDelete);

    if ($stmt->execute()) {
        echo "ok";
    } else {

        echo "Error : " . $con->error;
    }
}
?>
<?php
if (isset($_POST['delete'])) {
    $sql = "DELETE FROM table1 WHERE id=".$_POST['delete'];

    $con = mysqli_connect("localhost", "root", "", "myDB");
    if (!$con) {
        die("Connection failed: " . mysqli_error($con));
    }

    mysqli_query($con, $sql);

    mysqli_close($con);
}

?>