Visualizzazione risultati 1 fino 3 di 3

Discussione: Query per eliminare tabelle che contengono...

  1. #1
    Guest

    Predefinito Query per eliminare tabelle che contengono...

    Sera gente ^^
    Esiste una query per eliminare delle tabelle che contengono una determinata parola o sequenza di lettere o quant'altro?
    Mi spiego meglio...ho queste tabelle:

    Codice:
    `alliances_en`, `alliances_history_en`, `galaxy_en`, `iptable_en`, `players_en`, `reports_en`, `shoutbox_en`, `usertable_en`;
    Molte tabelle nel mio db si chiamano `alliances_`, `alliances_history` e cosi via...
    Sono diverse solamente alla fine da vari nomi,ex:

    Codice:
    alliances_en
    alliances_fornax
    alliances_draco
    alliances_44
    Cosi via...

    Io voglio eliminare tutte quelle che terminano in _en
    Si puo fare?
    Penso e spero di si xD

    Illuminatemi

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Direttmente con MYSQL non si può fare, ma con uno script in PHP si ;)
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);

    /* connessione al database, configura i dati! */
    $host = 'localhost';
    $user = 'luca1012';
    $pass = '';
    $dbName = 'my_luca1012';

    $db = mysql_connect($host, $user, $pass); // host, nickname, password
    mysql_select_db($dbName, $db); // inserisci il del nome database
    /* fine connessione al database */

    $q = mysql_query('SHOW TABLES FROM ' . $dbName, $db); // query per estrarre i nomi delle tabelle

    if(!$q) // se la query non viene eseguita esce dallo script e stampa l'errore
    die(mysql_error($db));

    $toDrop = ''; // tabelle da eliminare

    while($r = mysql_fetch_row($q)) {
    $name = $r[0]; // il nome della tabella
    $n = substr($name, strlen($name) - 3); // le ultime tre lettere

    if($n == '_en') // se la tabella termina in _en, la aggiunge alla coda
    $toDrop .= $name . ',';
    }

    $toDrop = substr($toDrop, 0, strlen($toDrop) - 1); // rimuove la virgola finale
    $q = 'DROP TABLE ' . $toDrop;

    if(!empty(
    $toDrop)) {
    echo
    'Provo ad eseguire la query: <em>', $q, '</em><br />';

    if(
    mysql_query($q, $db))
    echo
    'Tabelle eliminate con successo!';
    else
    echo
    'Errore: ', mysql_error($db);
    } else
    echo
    'Nessuna tabella da eliminare!';

    mysql_close($db); // chiude la connessione al db
    ?>
    Se configuri corretamente i dati, questo script eliminerà tutte le tabelle che hanno il nome terminante in _en.

  3. #3
    Guest

    Predefinito

    Bello bello bello xD
    Proprio quello che mi serve grassie :P
    Se ho problemi ad usarlo con alcune modifiche te lo dico ^^

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •