Programowanie w języku PHP » FAQ

Jak w PHP wczytać zawartość pliku *.sql

Często spotykaną konfiguracją na serwerach jest PHP</wiki> + MySQL</wiki>. Najczęściej definicje tabel oraz zapytania do bazy przechowywane są w pliku z rozszerzeniem *.sql. Niekiedy zachodzi konieczność wczytania owego pliku na serwer MySQL. Możemy to zrobić stosująć konto shell</wiki> albo program phpMyAdmin. Możemy również skorzystać z poniższego skryptu wczytującego plik coyote.sql, który powinien być umieszczony na serwerze.

/*
po udanej probie polaczenia z baza danych nalezy dodac deklaracje tabel znajdujace sie w pliku coyote.sql. w tym celu trzeba przeanalizowac' plik i usunac z niego wszelkie komentarze */
if (file_exists('coyote.sql'))
{
    $sql_file = file('coyote.sql'); // odczytaj plik do tablicy (jedna linia = jeden element tablicy)
 
    for ($i=0; $i<count($sql_file); $i++)
    {
     /* analiza kazdej linii polega na sprawdzeniu, czy nie zaczyna sie ona od znaku #, co oznacza komentarz (nalezy to usunac). Jezeli nie - do zmiennej $sql_commands dodajemy reszte zawartosci komend SQL */                                     
        if ($sql_file[$i][0] != "#")
         {
            $sql_commands .= $sql_file[$i];
         }
 
    }
    // na podstawie znaku ; okreslajacego koniec komendy SQL rozdzielamy wszystkie komendy
   $sql_commands = split(';', $sql_commands);
   $j = 1; // licznik zapytan
 
   for ($i=0; $i<count($sql_commands) -1; $i++)
   {
    /* w tej petli nastepuje wysylanie zapytan do bazy danych, co ma na celu utworzenie wszystkich potrzebnych tabel. jezeli zapytanie sie uda - wyswietlana jest informacja */
       if (!mysql_query($sql_commands[$i]))
       {
           echo 'Zapytanie nr ' . $j . ': błąd ' . mysql_error() . '...<br>';
       }
 
        ++$j;
   }
 
}

1 komentarz

nul 2006-05-22 02:10

funkcja podatna jest chyba występowanie znaku ";" w treści zapytania