2024/8/1 13:32:45
虽然上面的代码可以正常删除了,但是在删除一个不存在的id时没有错误提示。请优化。
2024/8/1 13:32:45
为了在删除一个不存在的用户 ID 时提供错误提示,我们可以在执行删除操作后检查受影响的行数。如果受影响的行数为 0,则说明没有找到对应的用户,我们可以返回一个错误消息。
以下是优化后的代码:
```php
if ($_SERVER['REQUEST_METHOD'] == 'DELETE') {
// 从输入流中获取 JSON 数据
$data = json_decode(file_get_contents('php://input'), true);
if (isset($data['user_id'])) {
$user_id = $data['user_id'];
$query = "DELETE FROM users WHERE user_id = :user_id";
$stmt = $db->prepare($query);
$stmt->bindParam(':user_id', $user_id, PDO::PARAM_INT);
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
echo json_encode(array("message" => "User was deleted."));
} else {
http_response_code(404);
echo json_encode(array("message" => "User not found."));
}
} else {
http_response_code(503);
echo json_encode(array("message" => "Unable to delete user."));
}
} else {
http_response_code(400);
echo json_encode(array("message" => "User ID is missing."));
}
}
```
### 解释:
1. **执行删除操作**:
- `$stmt->execute()` 执行删除操作。
2. **检查受影响的行数**:
- 使用 `$stmt->rowCount()` 检查受影响的行数。
- 如果受影响的行数大于 0,则说明删除成功。
- 如果受影响的行数为 0,则说明没有找到对应的用户,返回 404 状态码和错误消息。
3. **错误处理**:
- 如果执行删除操作失败,返回 503 状态码和错误消息。
- 如果 `user_id` 缺失,返回 400 状态码和错误消息。
这样,当你尝试删除一个不存在的用户时,将会得到一个 404 错误提示,告知用户未找到。