Visualizzazione risultati 1 fino 6 di 6

Discussione: Tabelle temporanee con MySql: si puo su AV?

  1. #1
    Guest

    Question Tabelle temporanee con MySql: si puo su AV?

    Ho portato sullo spazio AV uno script che funziona altrove e che prevede la creazione di una tabella temporanea mysql basata su alcuni campi di una tabella già presente sul db mysql di AV:

    $query = "CREATE TEMPORARY TABLE momtab SELECT nome, indirizzo, progressivo FROM tabutenti";

    Non funziona. Qualcuno ha avuto problemi analoghi o c'è un mio errore?
    Ho guardato nel forum x topics simili, ma nei pochi trovati non c'è risposta.
    Grazie fin da ora per eventuali risposte.

  2. #2
    Guest

    Predefinito

    Ok, grazie per la valanga di interventi chiarificatori
    In effetti in risposta alla query:
    "CREATE TEMPORARY TABLE momtab SELECT nome, indirizzo, progressivo FROM tabutenti";
    viene fuori questo errore:
    Access denied for user: 'mioaccountusername@localhost' to database 'my_mioaccountusername'.
    Chiaro quindi che non si può. Unica soluzione alternativa credo sia creare una nuova tabella e poi cancellarla a fine lavoro. Cioé:

    "CREATE TABLE momtab SELECT nome, indirizzo, progressivo FROM tabutenti";

    e dopo averla usata

    MYSQL_DROP_DB("momtab");

    L'impedimento alle tabelle momentanee sarà certamente un problema di sicurezza.

    Grazie comunque a tutti :grin:

  3. #3
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Non ti conviene usare dei file?
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  4. #4
    Guest

    Predefinito

    Penso sia inutile chiederti se hai selezionato il database prima di fare azioni, giusto?
    comunque non devi fare il drop db ma il drop table con il comando query DROP TABLE.
    Ma la tabella tabutenti e' tua?
    La cosa mi interessa mi fai sapere per favore?
    ciao

  5. #5
    Guest

    Smile

    Grazie a Binary e a Demen.
    So che il problema della mancanza di tabelle temporanee può essere tranquillamente aggirato in molti modi. La domanda sulla possibilità o meno di uso su AV era solo per sapere quali limiti ci sono qui (ad es. non mi sembra permesso neanche il LOCK TABLE).
    In effetti lo script (che ripeto funziona su uno spazio Aruba) usa una TEMPORARY TABLE per mostrare su una pagina un set di dati di una tabella con i valori originali di una campo ("richieste") seguito da una ipotesi di riduzione sul valore del campo stesso.
    Sfrondato del superfluo il codice è questo:


    -----------------------------------------------------------------------
    $db_server="localhost";
    $db_user="mioaccountusername";
    $db_pass="miapassword";
    $db_name="my_mioaccountusername";
    $db_table="nomedellamiatabella";


    $db = mysql_connect($db_server, $db_user, $db_pass);
    if ($db == FALSE)
    die ("Errore nella connessione: ".mysql_error());

    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione: ".mysql_error());

    //---------------------------------- DUPLICA TABELLA
    $query = "CREATE TEMPORARY TABLE momtab SELECT nome, cognome, richieste, round( richieste*0.30 , 0 ) AS ridotte FROM ".$db_table ;

    if (!$result = mysql_query($query, $db))
    die ("Errore nella duplicazione tabella: ".mysql_error());


    //---------------------------------- ESTRAZIONE DATI
    $query = "SELECT nome, cognome, richieste, ridotte FROM momtab ORDER BY richieste DESC,cognome,nome";
    if (!mysql_query($query, $db))
    die ("Errore nell'estrazione dati: ".mysql_error());

    $result = mysql_query($query, $db);

    //---------------------------------- ESPOSIZIONE RISULTATO
    echo "<div align='center'><center> \n <table border='1'> \n";
    while ($row = mysql_fetch_array($result)) {
    echo "<tr> \n";
    echo " <td> \n";
    echo $row[nome]." ".$row[cognome]." \n";
    echo " </td>\n";
    echo " <td> \n";
    echo $row[richieste]." \n";
    echo " </td>\n";
    echo " <td> \n";
    echo $row[ridotte]." \n";
    echo " </td>\n";
    echo "</tr> \n";
    }
    echo "</tr> \n </table> \n </center></div> \n";

    mysql_close($db);

    -----------------------------------------------------------------------

    Per farlo funzionare senza tabelle temporanee ho sostituito la tabella momentanea con una tradizionale:

    //---------------------------------- DUPLICA TABELLA
    $query = "CREATE TABLE momtab SELECT nome, cognome, richieste, round( richieste*0.30 , 0 ) AS ridotte FROM ".$db_table ;

    poi a fine lavoro la cancello:

    $query = "DROP TABLE momtab";
    if (!$result = mysql_query($query, $db))
    die ("Errore nel cancellare tabella: ".mysql_error());

    mysql_close($db);

    Come dicevo non è un problema, è solo per sapere cosa si può e cosa non si può fare. Qualcun'altro aveva avuto problemi analoghi ( MySql e tabelle temporanee oppure Create temporary table ) ma il link ad una risposta chiarificatrice non funziona. Non sono riuscito a trovare nel forum (mia scarsa attenzione?) nulla di illuminante sull'argomento.

    Grazie Demen per la segnalazione sull'erroraccio del MYSQL_DROP_DB. :winkOLD:

  6. #6
    Guest

    Predefinito

    capirai.... Sei il benvenuto

Regole di scrittura

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