• User Newbie

    create table in php-MYSQL

    ciao ragazzi ho un problema nella creazione di una tabella in mysql attraverso il codice php.
    ciò che mi da fastidio è l'impossibilità di crere una tabella con il nome di una variabile inizializzata,infatti la mia tabella non viene creata con il nome contenuto nella variabile ma bensì con il nome stesso della variabile che utilizzo..vi riporto il codice così capite di cosa sto parlando...
    //CREAZIONE TABELLA
    $g='ciao gt';
    $query = 'CREATE TABLE $g( '.
    'id INT NOT NULL AUTO_INCREMENT, '.
    'item TEXT(20) NOT NULL, '.
    'channel TEXT(50) NOT NULL, '.
    'description TEXT(17) NOT NULL, '.
    'PRIMARY KEY(id))';

    $ri = mysql_query($query);

    il problema è che vorrei chiamare la mia tabella con ciao gt ma invece prende il nome $g...AIUTO COME SI FA?


  • User Newbie

    Sostituisci l'apice con i doppi apici ( " )... In questo modo il php elabora ulteriormente la stringa, e se vede le variabili legge il contenuto...
    Oppure, tienilo così ma metti la variabile fuori dai doppi apici...


  • User Newbie

    ho provato a fare come hai detto in entramBi i casi, almeno spero di aver fatto come dici tu..riporto come ho fatto perche non si sa mai...

    $g="ciao gt";//metto i doppi appici qui?

    $query = 'CREATE TABLE $g( '.
    'id INT NOT NULL AUTO_INCREMENT, '.
    'item TEXT(20) NOT NULL, '.
    'channel TEXT(50) NOT NULL, '.
    'description TEXT(17) NOT NULL, '.
    'PRIMARY KEY(id))';

    $ri = mysql_query($query);

    ALTRA SOLUZIONE
    $g="ciao gt";
    $query = "CREATE TABLE $g( ".
    "id INT NOT NULL AUTO_INCREMENT, ".
    "item TEXT(20) NOT NULL, ".
    "channel TEXT(50) NOT NULL, ".
    "description TEXT(17) NOT NULL, ".
    "PRIMARY KEY(id))';

    Oppure, tienilo così ma metti la variabile fuori dai doppi apici...cosa vorrebbe dire?mi sa che non ho capito nulla ScUSA!


  • Moderatore

    Prova così

    //CREAZIONE TABELLA
    $g='ciao gt';
    $query = 'CREATE TABLE ' . $g . '( '.
    'id INT NOT NULL AUTO_INCREMENT, '.
    'item TEXT(20) NOT NULL, '.
    'channel TEXT(50) NOT NULL, '.
    'description TEXT(17) NOT NULL, '.
    'PRIMARY KEY(id))';

    $ri = mysql_query($query);


  • User Newbie

    grandissimo ora funziona in parte in quanto devo mettere ciao gt tutto attaccato ossia
    $g='ciaogt';
    altrimenti se metto
    $g='ciao gt';
    non avviene alcuna creazione della tabella nel db.
    secondo te qual'è il problema?


  • User Newbie

    se metto
    in $g=1; ossia ci metto un valore non funziana...che disastri


  • Moderatore

    Se metti degli spazi verranno inseriti nel database così com'è il valore della variabile...quindi spazi inclusi. Gli spazi di conseguenza potrebbero incasinare la query.
    Se hai la necessità di inserire spazi prova a mettere nel nome della variabile sempre apici backstabbati in questo modo:
    $g = ''ciao gt''

    oppure usa gli underscore _

    Per il problema dei numeri il punto è che vengono riconosciuti come tali e non come caratteri. Se usi $g = '1' dovrebbe funzionare ma considera che stai inserendo il carattere 1 e non il valore. Se dovrai farci operazioni dovrai trasformarlo in un numero intero, float, double o quelchetiserve.

    Fammi sapere se va bene.
    Ciao
    Shad


  • User Newbie

    ciao!ho provato a mettere $g = ''ciao gt'' ma non funziona me lo accetta solamente senza spazi..


  • User Newbie

    ho provato ad inserire caratteri speciali ma non ne vuole prorpio sapere..
    ho provato ad usare la trim o anche
    $g =ciaosgt;
    $ar1 = array ( '&' , '"', ''' , '<' , '>' );
    $ar2 = array ( '&', '"', "?", '<', '>' ) ;
    str_replace ( $ar1 , $ar2, $g );
    per fare una specie di parse per i caratteri speciali ma l'inserimento della tabella non avviene proprio


  • User Newbie

    ho utilizzato la str replace per sostituire caratteri speciali in quanto come nome tabella non accetta alcun carattere speciale ne tanto meno spazi


  • Moderatore

    Per lo spazio il codice è %20, l'hai provato?


  • User Newbie

    ho appena provato non funziona il %20..