通过普通JavaScript(AJAX)和PHP删除SQL数据

通过普通JavaScript(AJAX)和PHP删除SQL数据,javascript,php,ajax,Javascript,Php,Ajax,我能够通过AJAX“GET”链接到数据库以添加数据,但现在我必须发送另一个AJAX“POST”请求以从SQL数据库中删除数据。考虑到我之前没有PHP或SQL方面的知识,我正在努力完成这项任务。我曾尝试使用许多不同的参数发送请求,但我发现这些尝试都是徒劳的。我用jQuery找到了很多关于这方面的教程,但不幸的是,我必须使用纯JavaScript PHP: PHP: 我相信“userWaste”包含您要删除的记录的id 同时将xhr.open中的“test.php”更改为php脚本url警告:您完全

我能够通过AJAX“GET”链接到数据库以添加数据,但现在我必须发送另一个AJAX“POST”请求以从SQL数据库中删除数据。考虑到我之前没有PHP或SQL方面的知识,我正在努力完成这项任务。我曾尝试使用许多不同的参数发送请求,但我发现这些尝试都是徒劳的。我用jQuery找到了很多关于这方面的教程,但不幸的是,我必须使用纯JavaScript

PHP:

PHP:

我相信“userWaste”包含您要删除的记录的id


同时将xhr.open中的“test.php”更改为php脚本url

警告:您完全可以使用参数化的准备语句,而不是手动构建查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。使用
die(mysqli_error($conn))是一个非常糟糕的主意
在您的代码中,因为它可能会泄漏敏感信息。更多解释请参见本文:这似乎也不起作用。你能解释一下“+1”的作用吗?(在params变量中)在我看来,这个问题与PHP无关。您的PHP工作正常,并且您正在使用涵盖GET和POST的
$\u请求[“id”]
。这只是关于通过AJAX传递帖子正文。您可以通过删除不必要的部分来简化问题。是的,php很好。我之所以包含它,是因为我不确定是否在JavaScript中正确引用了它。
<?php

$userName = "root";
$password = "";
$dbName = "ToDo";
$server = "localhost";

$db = new mysqli($server, $userName, $password, $dbName);

$sql = "DELETE FROM tasks WHERE id = ?";
$stmt = $db->prepare($sql);
$stmt->bind_param("i", $_REQUEST["id"]);
$stmt->execute();

$returnVal = $stmt->affected_rows;
$stmt->close();
$db->close();
echo $returnVal;
const del = (userWaste) => {
    let xhr = new XMLHttpRequest();
    let url = "ToDo/deleteTask.php";
    let params = "?id=" + userWaste;
    xhr.open("POST", url, true);
    xhr.onreadystatechange = () => {
    if(xhr.readyState == 4 && xhr.status == 200){
    let deletedTask = xhr.responseText;
     }
   }
  xhr.send(params);
<?php
 header("Access-Control-Allow-Origin: *");
 $servername = "localhost";
 $username = "root";
 $password = "";
 $dbname = "todo";


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

$taskId = $_POST['taskId'];

$sql = "DELETE FROM tasks WHERE id=$taskId";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
    $conn->close();
    return true;
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    $conn->close();
    return false;
}
  const del = (userWaste) => {
        let xhr = new XMLHttpRequest();
        xhr.open("POST", "test.php", true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
        let params = "taskId=" + 1;
        xhr.onreadystatechange = function() { // Call a function when the state changes.
          if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
            const x = xhr.responseText;
            console.log(x);
          }
        }
        xhr.send(params);
      }