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

Adam Boduch

Często spotykaną konfiguracją na serwerach jest PHP + MySQL. 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 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;
   }

}
FAQ

1 komentarz

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