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;
}
}
funkcja podatna jest chyba występowanie znaku ";" w treści zapytania