Visualizzazione dei risultati da 1 a 3 su 3

Discussione: PDO SQL Errore Update

  1. #1
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314

    PDO SQL Errore Update

    Salve,

    Bene io con l'update di un record in php con estensioni PDO.

    Ho questa funzione dove permetto all'utente di recuperare la password(o meglio di reimpostarla a quella di default
    Codice PHP:
     public function recover() {
            
    // Controllo L'esistenza della coppia Utente/Email
            
    $email $_POST['email'];
            
    $utente $_POST['username'];
            
    $sth $this->db->prepare("SELECT * FROM utenti WHERE 
                    username = :utente AND email = :email"
    );
            
    $sth->execute(array(
                
    ':utente' => $utente,
                
    ':email' => $email
            
    ));
            
    $count $sth->rowCount();
            if (
    $count == 0) {
                
    header("location: " BASE_URL "index/main");
            } else {
                
    $postData = array(
                    
    'password' => crypto::create(MCRYPT_RIJNDAEL_128CRYPTO_KEYDEFAULT_PSW)
                );
                
    $where="'username' = '$utente' AND 'email' = '$email'";
                
    $this->db->update('utenti'$postData,$where);
                
    header("location: " BASE_URL "index/main");
            }
        } 
    Questa è la funzione update di una classe database a cui passo la tabella, i dati da aggiornare e la condizione
    Codice PHP:
    public function update($table$data$where) {
            try {

                
    $set '';
                foreach (
    $data as $key => $value) {
                    
    $set.="$key = '$key'";
                }
                
    $sql "UPDATE $table"
                        
    " SET $set"
                        
    " WHERE $where";
                
    session::set('campi'$sql);
                
    $sth $this->prepare($sql);
                foreach (
    $data as $key => $value) {
                    
    $sth->bindValue("':$key'"$value);
                }
          
    $sth->execute();
               
    session::set('risultato'$sth->execute());
            } catch (
    PDOException $e) {
                echo 
    'Si è verificata una PDO Exception.';
                
    session::set('risultato'$e->getMessage());
            }
        } 
    L'esecuzione mi da come risultato 1 quindi dovrebbe da manuale
    Returns TRUE on success or FALSE on failure.
    Il problema è che il campo password nella tabella utenti non cambia ..

    Qualcuno sa dirmi quale è l'errore ??

    Grazie !
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

  2. #2
    Togli gli apici dai nomi delle colonne:

    Codice PHP:
    ...
    $where "username = '$utente' AND email = '$email'"
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di danlupo
    Registrato dal
    Jul 2009
    Messaggi
    314
    Originariamente inviato da satifal
    Togli gli apici dai nomi delle colonne:

    Codice PHP:
    ...
    $where "username = '$utente' AND email = '$email'"
    ... 
    Ma scusa perchè mi dava 1 come risultato dell'esecuzione ??

    Ed un chiarimento. Come mai così come è scritto il codice (che ho corretto nella riga
    $set.="$key = ':$key'"; non mi prende la funzione bindvalue e mi da come valore del campo la chiave (assword) ??

    Giusto per capire e correggere e non fare solo copia incolla.
    Teoricamente io creo l'array con chiave (in questo caso) password ed un valore.

    Poi vado e gli dico di fare l'update e di associare al nome il valore, dove sbaglio ??

    Grazie Ancora
    Se rispondo ad una discussione è perchè so quello che dico ed ho voglia di rispondere, non per aumentare il contatore messaggi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.