2017-04-07 4 views
0

Ich habe eine Funktion zum Löschen eines Objekts in der Datenbank. Wenn ich diese Funktion teste, funktioniert es auf localhost, aber es funktioniert nicht auf der Website. Hat jemand eine Idee, wie man das beheben kann? P. S: Ich habe dünneLöschen Funktion arbeitet auf localhost, aber nicht auf Web

$app->delete('/places/:id', 'authenticate', function($place_id) use($app) { 
      global $user_id; 

      $db = new DbHandler(); 
      $response = array(); 
      $result = $db->deletePlace($user_id, $place_id); 
      if ($result) { 
       $response["error"] = false; 
       $response["message"] = "Place deleted succesfully"; 
      } else { 

       $response["error"] = true; 
       $response["message"] = "Place failed to delete. Please try again!"; 
      } 
      echoRespnse(200, $response); 
     }); 

public function deletePlace($user_id, $place_id) { 
     $stmt = $this->conn->prepare("DELETE p FROM places p, user_places up WHERE p.id = ? AND up.place_id = p.id AND up.user_id = ?"); 
     $stmt->bind_param("ii", $place_id, $user_id); 
     $stmt->execute(); 
     $num_affected_rows = $stmt->affected_rows; 
     $stmt->close(); 
     return $num_affected_rows > 0; 
    } 
+3

Wenn es an einem Ort arbeitet, aber nicht eine andere. Es ist wahrscheinlich nicht der Code. Es sind Berechtigungen oder andere Umweltfaktoren. Das PHP-Fehlerprotokoll wird normalerweise helfen herauszufinden, was vor sich geht. – mkaatman

+0

Sehen Sie sich Ihre Fehlerprotokolle an. –

Antwort

0

DELETE p FROM places p erscheint ein Syntaxfehler in der SQL zu sein.

$stmt = $this->conn->prepare(
    "DELETE FROM places p, user_places up WHERE p.id = ? AND up.place_id = p.id AND up.user_id = ?" 
); 

zu vermeiden Um diese Fehler in Zukunft fehlen, würde ich vorschlagen, den Fehler-Modus PDO::ERRMODE_EXCEPTION Einstellung:

$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
Verwandte Themen