Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    27

    modificare campo tabella con lo stesso valore

    Salve a tutti, ho un database utenti e ho scritto una funzione che permette di modificare la password, fino a qualche giorno fa funzionava tutto perfettamente ora, non so come, mi succede una cosa strana, quando cerco di modificare tramite query il valore del campo password se metto la stessa password ottengo un errore mentre se la cambio la query funziona.
    Faccio un esempio, ho questo campo da modificare che contiene 'pwdesempio' se chiamo la funzione e cerco di modificare il campo con lo stesso valore 'pwdesempio' la query non funziona mentre se la cambio con un altro valore esempio 'pwdesempio1' funziona benissimo!
    Sembra che la query eviti di reimpostare il campo con un valore uguale a quello che già contiene, ma da codice non c'è nessun tipo di verifica se i due valori sono uguali!

    posto il codice:
    Codice PHP:
    <?php
        
    require_once 'database.php'//serve per connettersi al database
    function resetPassword($userPassword,$userId)
    {
        
    // Apro la connessione al database
        
    $connection getConnection();
        
        
    // Questa  la query di aggornamento
        
    $sql "UPDATE utenti SET password ='%s' WHERE id_user ='%d'";
        
        
    // Assegno alla query i parametri da cercare
        
    $sql sprintf($sql$userPassword$userId);
        
        
    // Eseguo la query
        
    $result mysql_query($sql$connection);
        
        if (
    false == $result || mysql_affected_rows($connection) == 0)
        {
            return 
    false;
        }
        else
        {
            return 
    true;
        }
    }


    //faccio una prova
    if( false == resetPassword('pwdesempio',1) )
        echo 
    'FALSO';
    else
        echo
    'VERO';

    se nel campo password c'è già 'pwdesempio' mi ritorna false!

    Come mai? come posso evitarlo?

  2. #2
    Credo che derivi da questa condizione
    Codice PHP:
    mysql_affected_rows($connection) == 

    In pratica la funzione mysql_affected_rows ti dice il numero di record (righi/rows) modificati dalla tua query. Essendo che non hai modificato la password i righi modificato sono - appunto - 0 zero!

    Ti cito il manuale ufficiale
    When using UPDATE, MySQL will not update columns where the new value is the same as the old value. This creates the possibility that mysql_affected_rows() may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.
    Fonte: http://us1.php.net/mysql_affected_rows

    Soluzione... due possibili:
    1. semplicemente elimina quella condizione.
    2. esegui un controllo preventivo
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    27
    wuoooo era li davanti agli occhi cavolo!!!
    Grazie mille

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.