PHP SLIM DELETE问题得到总是成功的信息

问题描述:

当我运行这个脚本时,即使id不存在并且没有记录受到影响,我总是会得到成功消息"successfully deleted"。任何想法为什么?我怎样才能解决这个问题?PHP SLIM DELETE问题得到总是成功的信息

$app->post('/api/delete', function(Request $request, Response $response) { 

    $id = $request->getParam('id'); 

    $sql = "DELETE FROM test WHERE id=:id"; 

    try{ 
     // Get DB Object 
     $db = new db(); 
     // Connect 
     $db = $db->connect(); 
     $stmt = $db->prepare($sql); 
     $stmt->bindParam(':id', $id); 

     $stmt->execute(); 
     echo '{"notice": {"text": "successfully deleted"}}' ; 

    } catch(PDOException $e){ 
     //echo '{"error": {"text": '.$e->getMessage().'}}'; 
     return $response->withStatus(400)->write('{"error": {"text": '.$e->getMessage().'}}'); 
    } 
}); 
+1

只要执行查询时,它不会抛出异常。在你的情况下,它成功执行,并且它影响了0行。 –

需要使用rowCount()有: -

$app->post('/api/delete', function(Request $request, Response $response) { 

    $id = $request->getParam('id'); 

    $sql = "DELETE FROM test WHERE id=:id"; 

    try{ 
     // Get DB Object 
     $db = new db(); 
     // Connect 
     $db = $db->connect(); 
     $stmt = $db->prepare($sql); 
     $stmt->bindParam(':id', $id); 

     $stmt->execute(); 
     $count = $stmt->rowCount(); 
     if($count >0){ 
     echo '{"notice": {"text": "successfully deleted"}}' ; 
     } 

    } catch(PDOException $e){ 
     //echo '{"error": {"text": '.$e->getMessage().'}}'; 
     return $response->withStatus(400)->write('{"error": {"text": '.$e->getMessage().'}}'); 
    } 
}); 

try{ 
    // Get DB Object 
    $db = new db(); 
    // Connect 
    $db = $db->connect(); 
    $stmt = $db->prepare($sql); 
    $stmt->bindParam(':id', $id); 

    $query=$stmt->execute(); 
    if($query) 
    echo '{"notice": {"text": "successfully deleted"}}' ; 
    else 
    echo '{"notice": {"text": "Some Error Occured"}}' ; 
} catch(PDOException $e){ 
    //echo '{"error": {"text": '.$e->getMessage().'}}'; 
    return $response->withStatus(400)->write('{"error": {"text": '.$e->getMessage().'}}'); 
}