为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
小怪兽爱吃肉 2022-12-11 09:23:21
我正在尝试从我的数据库中删除一条记录。到目前为止,正如我在查询字符串参数中看到的那样,正确的 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();    })  }
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

你永远不会进入你的条件块,因为在你的情况下if ($_POST)总是会返回false。实际上,您使用带有空主体的 http DELETE 请求来调用此端点。


<?php


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


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());

}

如果您想确保使用正确的 HTTP 动词调用您的端点,请参考此问题,并添加:


if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {

     // Your code

}

此外,我建议您添加一种安全机制(如果情况并非如此)(例如身份验证控制),因为删除行的公开可用端点是一个安全问题。


查看完整回答
反对 回复 2022-12-11
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信