2017-08-04 50 views
1

當我運行這個腳本時,即使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行。 –

回答

1

需要使用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().'}}'); 
    } 
}); 
0
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().'}}'); 
}