Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    17

    php + mysql problema con creazione tabelle

    salve! uso easyPhp con mysql ed ho questo problema:
    uso una pagina php per creare in automatico le tabelle del db.
    Ogni tabella è una riga del file.
    Il file conta 700 righe->700 tabelle.
    uso questo codice:
    $con = mysql_connect("localhost","root","");
    if(!$con){
    die("Failed to connect db!");
    }
    else{
    mysql_select_db("my_db");
    $table = file("liste/all2.txt");
    for($i=0;$i<count($table); $i++){
    $query = "SET sql_mode='ANSI_QUOTES';
    create table \"".rtrim($table[$i])."\"(uno int not null,due int);";
    $res = mysql_query($query,$con);
    if(!$res) echo "Creazione fallita!";
    else echo "creazione di ".rtrim($table[$i])." completata con successo!";
    }

    }
    mysql_close($con);}

    $table e' l'array di righe lette dal file. controllato legge correttamente.
    rtrim la uso perche' la file() non mi elimina il fine riga.
    i nomi delle tabelle sono del tipo: uno due, a tabella, ecc, percio' uso \".
    Il risultato di questo codice è sempre e solo "creazione fallita"!!
    Ho provato a stampare gli errori di sql ma niente, ho provato ad eseguire la $query da phpadmin e va benissimo...solo nel file non va! mi aiutate?

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    controlla che errore ritorna mysql:

    if(!$res) echo mysql_error();
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    17
    grazie per la risposta!

    l'errore è errore di sintassi.

    ma, giustamente non l'avevo scritto prima , ho provato la stringa incriminata da phpadmin e non mi dà nessun errore...

    "Creazione fallita!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 'create table "Big Band"(uno int not null,due int)' at line 2"

    lo stesso errore me lo dava quando provavo a scrivere i nomi delle tabelle con gli spazi, ma ho risolto settando le "". In sql di phpadmin va e qui no...spero di essermi spiegato.

  4. #4
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    vuol dire che la query è sbagliata.
    controlla nel tuo phpmyadmin.
    2000 post e sono più vecchio di 4 anni...
    grazie a tutti....

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    17
    RISOLTO!

    posto la soluzione per chi ha lo stesso problema!

    Come spiegato in un sottoparagrafo di un sottocapitolo di capitolo marginale del manuale di mysql:

    Per creare nomi di tabelle speciali, per esempio nomi che sono comandi sql o nomi con spazi:

    count (uno int) oppure la mia tabella (uno int)

    bisogna usare l'accento grave:

    `count` (....) oppure `la mia tabella`(....)

    <ironico>Soluzione comoda!</ironico> per trovare l'accento grave andate in mappa di carateri di win oppure è il carattere unicode 60.
    Ciauz

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.