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

Discussione: eliminare record

  1. #1
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313

    eliminare record

    ciao, domandina veloce:

    devo eliminare un record da una tabella... ma prima di farlo devo eliminare tutti i record che fanno riferimento ad esso in altre 3 tabelle.

    Ma potrebbe anche non esserci alcun riferimento in una o più delle altre 3 tabelle.

    quindi:

    devo prima controllare l'esistenza e poi eliminare i records? o posso direttamente fare DELETE FROM ... WHERE ID = xxx e se mysql non trova niente chissenfrega? O mi fa errore?

    thx
    alcool: la causa e la soluzione di tutti i problemi

  2. #2

    Re: eliminare record

    Originariamente inviato da Gumble
    se mysql non trova niente chissenfrega? O mi fa errore?
    chissenefrega, al massimo ti dara' un affected_rows pari a zero, se lo richiami, altrimenti se la query e' corretta non dara' alcun errore, semplicemente non fara' niente.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    grazie per la delucidazione!
    alcool: la causa e la soluzione di tutti i problemi

  4. #4
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    ah...
    questo é possibile?

    Codice PHP:
    DELETE FROM db_instancedb_detailsdb_tbsdb_backup
    WHERE db_prbi_id 
    '37' 
    per cancellare tutto con un colpo solo...
    alcool: la causa e la soluzione di tutti i problemi

  5. #5
    no, e' alquanto ambigua come query e se non ricordo male il DELETE va solo su una tabella alla volta anche perche' le condizioni per fare un delete sicuro non le hai messe, a prescindere dalla fattibilita'
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    ecco.. allora potresti illuminarmi? come faccio un delete sicuro?

    devo eliminare tutti i records che hanno db_prbi_id = '$var' da queste 4 tabelle.

    db_instance, db_details, db_tbs, db_backup, db_prbi
    alcool: la causa e la soluzione di tutti i problemi

  7. #7
    una possibile soluzione
    codice:
    function deleteFromTables($tables, $query) {
    	for($a = 0, $b = count($tables); $a < $b; $a++)
    		mysql_unbuffered_query(str_repalce('<table>', $tables[$a], $query));
    }
    
    
    $id_to_delete = 37;
    $tables = array('db_instance', 'db_details', 'db_tbs', 'db_backup', 'db_prbi');
    deleteFromTables($tables, 'DELETE FROM <table> WHERE db_prbi_id = '.$id_to_delete);
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    ok, cicli la query per ogni tabella.

    cosa é mysql_unbuffered_query?

    e scusami se non ho capito: dove sono le condizioni di sicurezza per il delete sicuro?

    in fondo fai (x il numero delle tabelle):

    "DELETE FROM $tabella WHERE db_prbi_id = 37"

    che mi sembra la solita query di delete...
    alcool: la causa e la soluzione di tutti i problemi

  9. #9
    Originariamente inviato da Gumble
    ok, cicli la query per ogni tabella.
    te l' ho detto, mi sembra di ricorda che non e' possibile fare un delete su piu' di una tabella, ma potrei sbagliarmi


    Originariamente inviato da Gumble
    cosa é mysql_unbuffered_query?
    il modo piu' veloce di fare una query, ovvero senza informazioni aggiunte oltre la sola ed esclusiva query


    Originariamente inviato da Gumble
    e scusami se non ho capito: dove sono le condizioni di sicurezza per il delete sicuro?
    le condizioni di sicurezza sono sulla reale rimozione di quei record in una ipotetica stringa su piu' tabelle.

    Nel tuo esempio non ci sono clausole che ti assicurano in nesun modo che a prescindere dalla tabella che ha o meno quel valore le altre vengano alterate con il delete.

    Se non ti va bene cosi' prova a trovare un altro metodo
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #10
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    Se non ti va bene cosi' prova a trovare un altro metodo
    non era una critica o qlc di simile.. solo non capivo bene cosa erano queste condizioni.

    pensavo che intendevi un modo per risolvere il seguente problema:

    cosa capita se durante il ciclo qlc si impalla e non vengono eliminati i record delle tabelle successive? o meglio se una query non va a buon fine e le altre si, come faccio a dire all'utente che i record non sono stati eliminati dalla tabella xxxxxx per via di un errore?

    mi sembra molto importante questo... non credi?
    alcool: la causa e la soluzione di tutti i problemi

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.