Zapytanie DELETE w PDO

0

Witam,
używam środowiska cakephp 3.0 i tworzę właśnie stronę w której potrzebny mi jest dostęp do użytkowników oraz ich modyfikacja lub usunięcie.Rejestracja użytkowników jak i wypisywanie ich w tabeli działa już prawidłowo, niestety gdy próbuję usunąć lub zmodyfikować użytkownika wykorzystując id nic się nie dzieje(dodam już że próbowałem to robić na wiele sposobów a teraz kod usunięcia przepisałem wprost z poradnika do PDO i tylko podmieniłem nazwy zmiennych na swoje i dalej nie działa:( ).Oto funkcje których używam :

 <?php

//include 'UsersController';

$user=new App\Controller\UsersController();



if(!empty(filter_input(INPUT_POST, 'user_name'))&& !empty(filter_input(INPUT_POST, 'user_realname')) 
        && !empty(filter_input(INPUT_POST, 'user_secondname')) && !empty(filter_input(INPUT_POST, 'user_city'))
        && !empty(filter_input(INPUT_POST, 'user_street')) && !empty(filter_input(INPUT_POST, 'user_hnum'))
        && !empty(filter_input(INPUT_POST, 'user_postcode')) && !empty(filter_input(INPUT_POST, 'user_postcity'))
        && !empty(filter_input(INPUT_POST, 'user_phonenumber')) && !empty(filter_input(INPUT_POST, 'user_email')) 
       )
{
    $user->setUserId(filter_input(INPUT_POST, 'user_id'));
    
    $user->setUserName(filter_input(INPUT_POST, 'user_name'));
    $user->setRealName(filter_input(INPUT_POST, 'user_realname'));
    $user->setSecondName(filter_input(INPUT_POST, 'user_secondname'));
    $user->setCity(filter_input(INPUT_POST, 'user_city'));
    $user->setStreet(filter_input(INPUT_POST, 'user_street'));
    $user->setNumberh(filter_input(INPUT_POST, 'user_hnum'));
    $user->setPostCode(filter_input(INPUT_POST, 'user_postcode'));
    $user->setPostCity(filter_input(INPUT_POST, 'user_postcity'));
    $user->setPhoneNumber(filter_input(INPUT_POST, 'user_phonenumber'));
    $user->setUserMail(filter_input(INPUT_POST, 'user_email'));
    
    $user->DeleteUser();
    
    $this->response->header('Location', '../users/delete?success=1');
     
}
else
{?>
    <tr>
     <td> </td><td><span style="color: red">Uzytkownik nie został usunięty, spróbuj jeszcze raz!!</span></td>
</tr>  <?php
} 

oraz funkcja DeleteUser() z UsersControllera:

 public function DeleteUser()
{
    try {
   $bdd=new PDO("mysql:host=localhost;dbname=shop","root","");
} catch (Exception $exc) {
    die("ERROR: ".$exc->getMessage());
}
    $this->layout = 'tables';//ładujemy layout
    
   
    $req="DELETE FROM 'users' WHERE 'user_id'=:user_id";
    $query = $bdd->prepare( $req );
    $query->execute( array( ":user_id" => $this->getUserId() ) );
    
    
}


}

Bardzo proszę was o pomoc bo już nie wiem jak tego dokonać....

0

Spróbuj

 
    $req="DELETE FROM 'users' WHERE 'user_id'=:user_id";
    $query = $bdd->prepare( $req );
    $query->bindParam( ":user_id" , $this->getUserId() );
    $query->execute();

To raz. Dwa, generalnie nazwy tabel i kolumn podaje sie pomiędzy tyldą ` , a nie apostrofem.

$req="DELETE FROM `users` WHERE `user_id`=:user_id";
0

Zastosowałem się do obu twoich wskazówek i nadal nie działa :(

0

Sprawdź, co Ci zwraca funkcja:
var_dump($this->getUserId());

0

Tej funkcji jeszcze nie sprawdzałem ale próbowałem po prostu na sztywno wybrać jakiś numer id który jest utworzony i usunąć tą funkcją i też nie działa, ale z tego co widzę to rzecz będzie w tych funkcjach sczytujących z form input bo teraz próbowałem po prostu przekopiować tą funkcję z controllera dać mu zadany id i odpalić na nowym widoku i wygląda na to że działa bo usunął mi usera.

 $user_id=16;
    $req="DELETE FROM `users` WHERE `user_id`=:user_id";
    $query = $bdd->prepare( $req );
    $query->bindParam( ":user_id" , $user_id );
    $query->execute(); 

Teraz kwestia tego dlaczego te funkcje nie zwracają lub nie pobierają prawidłowego wyniku jak w 2 poprzednich zakładkach czyt. np rejestacja to działało?

0

Odkryłem przed chwilą w czym rzecz robiąc kolejną taką funkcję i teraz moje pytanie czy w form action="deleteuser" da się jakoś usunąć ostatni człon naszego linku?? Ponieważ zauważyłem że ta funkcja po prostu nadpisuje nasz link i dlatego to nie działało poprawnie wykombinowałem już takie coś

action="../deleteuser/<?php echo $row->user_id; ?>" 

i wtedy usuwa już mi dane z bazy danych tylko przez to ../ powtarza w linku nazwę poprzedniego członu i wyskakuje błąd.
np. link users/delete/16 zamienia się na users/users/deleteuser/16 a ja chce by było tylko users/deleteuser/16

1 użytkowników online, w tym zalogowanych: 0, gości: 1