php - Angular中的http删除功能有问题,没有错误
问题描述
我正在尝试从我的数据库中删除一条记录。到目前为止,正确的 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();
})
}
解决方案
你永远不会进入你的条件块,因为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
}
此外,我建议您添加一个安全机制(例如身份验证控制),因为删除行的公开可用端点是一个安全问题。
推荐阅读
- elasticsearch - 如果所有值都等于给定参数,则 Elasticsearch 查询返回结果
- java - 出于某种原因,我的 Android 房间 DAO 插入在 Temi Robot 上不起作用
- python - 以一种形式创建多个对象 django
- java - 如何从嵌套的 LinkedHashMap 中获取数据
- docker - 【docker on wsl2】 E: gnupg, gnupg2 和 gnupg1 好像没有安装
- kubernetes - 如何设置适合我的应用程序的就绪和活跃度探测值?想避免为http探针编写代码
- vue.js - Nuxtjs 组合 API 反应式不适用于嵌套对象
- android - Andorid app dev - 读取连接的谷歌账户
- html - 调整统一 webgl 画布无响应的大小
- ssl - Schannel 日志密码套件版本不正确