2024/8/1 13:32:45 ![]()
虽然上面的代码可以正常删除了,但是在删除一个不存在的id时没有错误提示。请优化。
2024/8/1 13:32:45 
为了在删除一个不存在的用户 ID 时提供错误提示,我们可以在执行删除操作后检查受影响的行数。如果受影响的行数为 0,则说明没有找到对应的用户,我们可以返回一个错误消息。
以下是优化后的代码:
```phpif ($_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 错误提示,告知用户未找到。