Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Errore import dati su MySql da PHP

    Come da titolo ho creato un file SQL da phpmyadmin contenente la mia tabella comuni,con i relativi record.

    Premetto che se rifaccio l'import da phpmyadmin funziona perfettamente.

    Ora però avrei bisogno di fare questo import tramite php ed ho letto che basta inserire il contenuto del file nella variabile da passare come query,ma questo mi da un'errore alla prima riga,che come si sà contiene un commento dell'export.

    Vi posto le prime righe del file SQL:

    -- phpMyAdmin SQL Dump
    -- version 2.11.3
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost:3307
    -- Generation Time: Nov 15, 2008 at 03:09 AM
    -- Server version: 5.0.45
    -- PHP Version: 5.2.5

    Vi posto le righe utilizzate per l'import da PHP:

    $file = "comuni.sql";
    $f = fopen ($file,"r");
    $query = fread($f,filesize($file));
    fclose($f);
    mysql_query($query) or die (mysql_error());

    Vi posto l'errore:

    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 '-- phpMyAdmin SQL Dump -- version 2.11.3 -- http://www.phpmyadmin.net -- ' at line 1

    Se faccio una stampa della variabile mi esce esattamente il contenuto del file.

    A cosa è dovuto l'errore secondo voi?

  2. #2
    Non puoi fare l'import di un dump con quel codice.

    Scaricati i sorgenti di phpMyAdmin e studiati il codice del parser SQL che utilizza per poter eseguire l'import di un dump.

  3. #3
    Ti ringrazio per la risposta,avevo pensato a questa soluzione,solo che come faccio a ritrovare il codice che importa il dump tra più di 1000 file di phpmyadmin?Non che sia impossibile,ma mi ci vuole una giornata.

    Volevo solo sapere che qualcuno aveva già avuto il mio stesso problema e come aveva risolto.

    Grazie

  4. #4
    Per fare il restore di un backup dovresti usare dei comandi shell. Esiste la possibilita' di importare tutto un file costruito con la sintassi prevista ovviamente.

    Da php e' praticamente impossibile questo restore perche' per ogni riga deve essere effettuata una query o un blocco di INSERT con multivalori.

    Potresti provare ad usare comandi shell tramite exec (se abilitato) oppure salvare le tabelle in un file di testo da caricare con un foreach riga per riga da mandare in esecuzione. SELECT ... INTO OUTFILE

    Ora se lo fai per ragioni di didattica puoi anche studiarti il phpmyadmin ma, se devi ripristinare un database/tabelle non credo sia conveniente strutturare un programma in php quando hai dei tools validissimi per farlo correttamente come mysql administrator, phpmyadmin, SQLyog ed altri

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Piero ti ringrazio per la risposta.

    Io lo sto facendo perchè sto realizzando un sito e vorrei che in fase di installazione mi creasse la struttura del DB.

    Di solito facevo una query per volta contenente le varie tabelle,però ho visto in molti programmi php questo file .SQL e credevo di aver intuito che si potesse estrapolare la struttura del database, fatta magari da phpmyadmin, in un unico file per poi reimportalra in fase di installazione tramite riga di comando.

    Se non è così come mai si trovano spesso questi file .SQL?
    A cosa servono?

    Grazie.

  6. #6
    Originariamente inviato da djalessio
    Piero ti ringrazio per la risposta.

    Io lo sto facendo perchè sto realizzando un sito e vorrei che in fase di installazione mi creasse la struttura del DB.

    Di solito facevo una query per volta contenente le varie tabelle,però ho visto in molti programmi php questo file .SQL e credevo di aver intuito che si potesse estrapolare la struttura del database, fatta magari da phpmyadmin, in un unico file per poi reimportalra in fase di installazione tramite riga di comando.

    Se non è così come mai si trovano spesso questi file .SQL?
    A cosa servono?

    Grazie.
    sono file per la configurazione del database. Una prima diversita' e' nel carattere che contraddistingue un commento dal codice.

    con php trovi #, con sql invece il doppio trattino --

    non sono usati per fare un restore dei dati. Vanni usati la prima volta e mai piu'. Guarda come funziona un codice di installazione. Ognuno lo fa a modo suo. Ovvio che se distribuisci del tuo codice tu non possa pretendere che venga utilizzato un determinato tool, ma debba fornire lo strumento per l'installazione del database.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.