• User Attivo

    Comando DROP TABLE

    Che comando dovrei eseguire per cancellare TUTTE le tabelle "nuke_"?


  • Super User

    prova così:

    
    <?php
    mysql_connect&#40;"localhost", "mysql_user", "mysql_password"&#41;;
    $result = mysql_list_tables&#40;"mydb"&#41;;
    $num_rows = mysql_num_rows&#40;$result&#41;;
    for &#40;$i = 0; $i < $num_rows; $i++&#41; &#123;
    	$nometabella=mysql_tablename&#40;$result, $i&#41;;
    	if &#40;substr&#40;$nometabella,0,5&#41;=='nuke_'&#41;
    	&#123;
    		drop table $nometabella
    	&#125;
        echo "Table: ", $nometabella, " cancellata
    ";
    &#125;
    
    mysql_free_result&#40;$result&#41;;
    ?> 
    
    
    

    :ciauz:

    p.s. [url=http://www.google.it/search?q=get+table+list+mysql&hl=it&hs=la&lr=&c2coff=1&client=firefox-a&rls=org.mozilla:it-IT:official&start=10&sa=N]trucchetto


  • User Attivo

    Ho provato a farne una pagina e eseguirla dal browser ma non è successo niente...


  • Super User

    hai inserito pari pari il codice che ti ho suggerito?

    dimmi di no dai 😄


  • User Attivo

    Nooooooo!
    Ho inserito i dati corretti, non sono proprio così scemo 😄


  • Super User

    prova a stampare l'elenco delle tabelle prima di provare a cancellarle.

    magari non hai i diritti per accedere a quella funzione.


  • User Attivo

    @sms said:

    io proverei con una cosa del tipo:

    DROP TABLE nuke_%
    

    dove % è il carattere jolly di sql server (credo che per mysql sia lo stesso).
    non ho mai provato a verificare se ciò in realtà funzioni.


  • User Attivo

    Eccomi, ho provato il comando DROP TABLE nuke_% ma mi esce:

    Errore

    query SQL :

    DROP TABLE nuke_ %

    Messaggio di MySQL:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%' at line 1

    Cosa dovrei fare? :arrabbiato:


  • User Attivo

    ok, il mio sistema non funziona:

    sempre andando a caso, io ho ritoccato lo script di timba

    
    <?php
    mysql_connect&#40;"localhost", "mysql_user", "mysql_password"&#41;;
    $result = mysql_list_tables&#40;"mydb"&#41;;
    $num_rows = mysql_num_rows&#40;$result&#41;;
    for &#40;$i = 0; $i < $num_rows; $i++&#41; &#123;
       $nometabella=mysql_tablename&#40;$result, $i&#41;;
       if &#40;substr&#40;$nometabella,0,5&#41;=='nuke_'&#41;
       &#123;
    //********* HO MODIFICATO LA RIGA QUI SOTTO
    //il mio intento sarebbe quello di fare eseguire la query al db?!
          $esegui_brutto_bstardo = mysql_query&#40;"drop table $nometabella"&#41;
       &#125;
        echo "Table: ", $nometabella, " cancellata
    ";
    &#125;
    
    mysql_free_result&#40;$result&#41;;
    ?>
    

  • User Attivo

    in pratica faccio una pagina php e la eseguo da browser?


  • User Attivo

    Ma questo script mi fa cancellare solo una tabella alla volta?


  • Super User

    non eseguire il codice ad occhi chiusi, soprattutto se altri che l'hanno scritto l'hanno scritto di getto senza provarlo.

    se per sbaglio ti fa fuori il database????

    l'hai letto e compreso tutto? se non capisci qualcosa di quello che fa ogni singola funzione le strade sono 2:

    1. cercare su www.php.net che cosa fa una data funzione
    2. se non si capisce si chiede sul forum.

    quindi se non capisci un determinato comando vedo se posso spiegartelo e lo faccio molto volentieri 🙂 :ciauz:


  • User Attivo

    Ma più o meno lo capisco ma non posso essere sicuro che funzioni.... in teoria mi elimina tutte le tabelle con prefisso nuke_ vero? Lo provo?


  • User Attivo

    I campi da cambiare sono solo questi: ("localhost", "mysql_user", "mysql_password")?


  • User Attivo

    Cè nessuno? :mmm:


  • User Attivo

    @rdo said:

    I campi da cambiare sono solo questi: ("localhost", "mysql_user", "mysql_password")?esattamente.


  • User Attivo

    Ho provato caricando e eseguendo una pagina col seguente codice

    <?php
    mysql_connect("mysql.hosting..it", "admin", "********");
    $result = mysql_list_tables("*******");
    $num_rows = mysql_num_rows($result);
    for ($i = 0; $i < $num_rows; $i++) {
    $nometabella=mysql_tablename($result, $i);
    if (substr($nometabella,0,5)=='nuke')
    {
    //********* HO MODIFICATO LA RIGA QUI SOTTO
    //il mio intento sarebbe quello di fare eseguire la query al db?!
    $esegui_brutto_bstardo = mysql_query("drop table $nometabella")
    }
    echo "Table: ", $nometabella, " cancellata
    ";
    }

    mysql_free_result($result);
    ?>

    Dove al posto dei *** ho messo i dati (spero giusti) ma non è successo niente!
    Non posso credere che nessuno in questo forum non mi sappia dire come fare a eliminare tutte ste stronzette di tabelle 😢 😢 :arrabbiato: :arrabbiato:


  • User

    io ho lo stesso problema... non riesco a far elmininare le tabelle in fase di script. ovviamente, per lo script, tutto é ok senza errori o altro. poi controllo dal phpmyadmin e trovo tutte le tabelle intatte che mi ridono in faccia. risultato? mi sono impantanato nel mio progetto, anche perché tutti, ma proprio tutti, ti dicono che le tabelle si cancellano con

    DROP TABLE nome_tabella
    tra l'altro, se scrivo sul phpmyadmin, nella query di esempio, > drop tableS e > drop table noto che mi manda 2 richieste diverse di conferma per l'eliminazione della tabella. a questo punto mi chiedo: non é che si tratti di una configurazione del phpmyadmin che mi blocca tale comando in fase di script? e se si, come modifico quest'opzione. se no, cavolo non so nemmeno io più dove andare: tutti i manuali cartacei e online metterebbero la mani sul fuoco assicurandoti che con > $sql = "DROP TABLES $tabella"; $ris = mysql_query ($sql); si cancelleranno le tabelle del database... e pensare che allo stesso modo passo un file *.sql e mi creo intere tabelle del database quando mi servono: basta cambiare la stringa all'interno di $sql e passarla alla funzione "mysql_query ()"...
    sto tentando di capire come fa il phpmyadmin a cancellare 'ste tabelle... non vedo altra soluzione...