Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: mysql affected rows

  1. #1

    mysql affected rows divento scemooo

    Ragazzi sto diventando matto,da un link mi connetto a una pagina php che richiama questa funzione di delete utente quindi questo codice che leggerete qui sotto confronterà la stringa di uid(è un campo di 32 caratteri creato random) e se presente mi cancellerà l'utente dal sui id utente il problema è che mi fa la cancellazione tranquillamente però come messaggio mi restituisce sempre REG FAILED

    Cosa sbaglio??


    Codice PHP:
    function reg_delete($id){
    $table'utenti';
    $numero=$GET['id'];
    $words split(" "$_GET ['id']);
    $Query "SELECT * FROM ".$table." WHERE 1=1 ";
     
    foreach(
    $words as $word)
    {
      
    $Query .= " AND uid LIKE '%$word%' ";
    }
     
    $result mysql_query($Query);
    while ( 
    $rw mysql_fetch_assoc$result ) ) {
             
    $utente=$rw["id"];
             
    $nickname=$rw["username"];
             
    $userid=$rw['uid'];         
             }
             
    $strSQL "DELETE FROM utenti WHERE $utente = id";
             
    mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
             
                if (
    mysql_affected_rows () != 0) {
                echo 
    "tutto apposto trovato";
                return 
    REG_SUCCESS; }
                
                else { echo 
    'nessuna corrispondenza trovata' ;
                return 
    REG_FAILED;}


  2. #2
    $strSQL = "DELETE FROM utenti WHERE $utente = id";

    cos'e' id?

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    id è il campo id utente nel database il campo univoco che utilizzo come chiave primaria..

  4. #4
    Originariamente inviato da webking2003
    id è il campo id utente nel database il campo univoco che utilizzo come chiave primaria..
    non si capiva poiche' tu passi un $id alla funzione che poi non utilizzi, almeno cosi' mi pare.

    Non e' troppo chiaro cosa fai con il foreach anche perche' solitamente un $_GET['id'] dovrebbe averne solo 1 di id. Per il delete gli id dovrebbero essere raccolti in una variabile in questo modo:

    $var_id = '1, 2, 3, 4, 5';

    e poi passati al delete con:

    $strSQL = "DELETE FROM utenti WHERE id IN($var_id)";

    prova a stampare le query prima di eseguirle e vedi cosa valorizzano le variabili

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    si molto probabilmente sono un pò una frana a spiegarmi.. Allora una volta che l utente si è registrato gli arriva una mail con un link per potersi registrare formato dalla pagina.php=?uid che sarebbe il valore del suo campo uid che viene creato in automatico dallo script di registrazione oltre poi al suo id utente che è sequenziale e chiave primaria auto increment. Quando clicca sul link per cancellarsi quindi passa questo valore alla funzione,che lo recupero in $word poi lo splitto e con il for guardo se esiste un utente con quell uid,se esiste poi mi prendo i dati,li metto nelle variabili e faccio il delete attraverso il suo id identificativo..

  6. #6
    Stampa le query.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    ragazzi ho cambiato il codice in questo modo:

    Codice PHP:
    function reg_delete($id){
    $table'utenti';
    $numero=$GET['id'];
    $words split(" "$_GET ['id']);
    $Query "SELECT * FROM ".$table." WHERE 1=1 ";
     
    foreach(
    $words as $word)
    {
      
    $Query .= " AND uid LIKE '%$word%' ";
      
    }
     
    $result mysql_query($Query);


    while ( 
    $rw mysql_fetch_assoc$result ) ) {
             
    $utente=$rw["id"];
             
    $nickname=$rw["username"];
             
    $userid=$rw['uid'];
             }

             if (
    mysql_affected_rows () != 0){
                echo 
    "tutto apposto trovato";        
                
    $strSQL "DELETE FROM utenti WHERE $utente = id";
                
    mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
                return 
    REG_SUCCESS
                break;
                 }
                else { 
     
                echo 
    'nessuna corrispondenza trovata' ;
                break;
                return 
    REG_FAILED;
                } 
    Praticamente che succede: la cancellazione me la fa quindi in questo if maledetto ci entra e ci esce
    Codice PHP:
    if (mysql_affected_rows () != 0){
                echo 
    "tutto apposto trovato";        
                
    $strSQL "DELETE FROM utenti WHERE $utente = id";
                
    mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
                return 
    REG_SUCCESS
                break;
                 } 

    ma sicuramente io non riesco a ricevere il REG_SUCCESS in modo corretto,forse non lo caccio fuori dalla funzione o non lo recupero bene??
    Nell'altra pagina lo recuopero in questo modo:

    Codice PHP:
    $status reg_delete($utente);
    switch(
    $status){
            case 
    REG_SUCCESS:
     
    ///////////codice per il messaggio di avvenuta cancellazione//////
    }
    case 
    REG_FAILED:
     
    ///////////codice per il messaggio di Cancellazione già effettuata in precedenza//////


    secondo voi non tiro fuori il valore? avevo anche provato a stamparlo ma non mi tira fuori niente!!

  8. #8
    se vuoi vedere le righe trovate da una select devi usare mysql_num_rows($result) e non mysql_affected_rows() ....

    e poi stampa le query .....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Prima di tutto:

    codice:
    WHERE utente = $id
    
    non
    
    WHERE $utente = id
    inoltre, PRIMA il delete POI il controllo con mysql_affected_rows. Per controllare i risultati di una SELECT si usa mysql_num_rows.

  10. #10
    il problema però mi sembra che è come se non ricevo niente nell'altra pagina cioè non ricevo nè REG_SUCCESS nè REG_FAILED

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.