Angular中http delete函数的问题,没有报错

我正在尝试从我的数据库中删除一条记录。到目前为止,正如我在查询字符串参数中看到的那样,正确的 id 正在传递,而且我没有收到任何错误。但是,该行没有被删除,我开始认为这只是一个语法错误,但我不确定。


删除-like.php


<?php


$id=isset($_GET['id']) ? $_GET['id'] : die('ERROR: id not found.');


if($_POST) {


include 'connectPDO.php';


try {

    $query = "DELETE FROM likes WHERE id = ?";


    $stmt = $con->prepare($query);


    $stmt->bindParam(1, $id);


    $stmt->execute();


} catch (PDOException $exception) {

    die('ERROR: ' . $exception->getMessage());

}

}

这是我调用它的服务文件。

论坛服务.ts


  removeLike(id: string) {

    return this.http.delete(`${this.baseUrl}/remove-like.php?id=${id}`);

  }

然后这是我在我的组件中调用该函数的部分。

主题.component.ts


  clickDislike() {

    this.forumService.removeLike(this.dataService.getToken() + 'topic' + this.forumService.getLikeToken()).subscribe(result => {

  this.ngOnInit();

    })

  }


小怪兽爱吃肉
浏览 94回答 1
1回答

米琪卡哇伊

你永远不会进入你的条件块,因为在你的情况下if ($_POST)总是会返回false。实际上,您使用带有空主体的 http DELETE 请求来调用此端点。<?php$id=isset($_GET['id']) ? $_GET['id'] : die('ERROR: id not found.');include 'connectPDO.php';try {&nbsp; &nbsp; $query = "DELETE FROM likes WHERE id = ?";&nbsp; &nbsp; $stmt = $con->prepare($query);&nbsp; &nbsp; $stmt->bindParam(1, $id);&nbsp; &nbsp; $stmt->execute();} catch (PDOException $exception) {&nbsp; &nbsp; die('ERROR: ' . $exception->getMessage());}如果您想确保使用正确的 HTTP 动词调用您的端点,请参考此问题,并添加:if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {&nbsp; &nbsp; &nbsp;// Your code}此外,我建议您添加一种安全机制(如果情况并非如此)(例如身份验证控制),因为删除行的公开可用端点是一个安全问题。
打开App,查看更多内容
随时随地看视频慕课网APP