Pisze program który ma wypełniać baze danych danymi z pliku XML. Przykładowa zawartość pliku XML wygląda następująco:
<linie> <linia nazwa="1"> <wariant id="1" nazwa="BISKUPIN - MARINO"> </wariant> </linia> </linie>W bazie znajduje się tabela która ma trzy kolumny:
| nazwa_linii | typ_transportu | kierunek |
wszystkie kolumny są typu varchar.
Stworzyłem kod który wpisuje do zmiennych interesujące mnie dane a następnie wyświetla je na ekranie i zapisuje do bazy.
<?PHP ini_set( 'display_errors', 'On' ); error_reporting( E_ALL ); require('polaczeniezbaza.php'); $typ_transportu="tramwaj"; $rozklad = simplexml_load_file('1.xml'); echo '- '; foreach ($rozklad->linia as $linia) { echo '
- '; $linia_tmp=$linia->attributes(); echo $linia_tmp['nazwa']; foreach ($linia->wariant as $wariant) { echo '
- '; $wariant_tmp=$wariant->attributes(); echo $wariant_tmp['nazwa']; echo $linia_tmp['nazwa']; $zapytanie=mysql_query("INSERT INTO linia (nazwa_linii, typ_transportu, kierunek) VALUES ($linia_tmp2['nazwa'], $typ_tmp2, $wariant_tmp2['nazwa'])"); } echo '
Problem pojawia się w linii w której jest zapytanie SQL. Wyrzuca następujący błąd syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING .
Szukałem po i=forach czym to może być spowodowane i znalazłem propozycje aby zmienne w zapytaniu umieścić w apostrofach np. '$linia_tmp2['nazwa']' lub w "'.$linia_tmp2['nazwa'].'" lecz to nie przyniosło żadnego efektu. Próbowałem również rzutować zmienne na string i usuwać białe znaki za pomocą fukncji trim ale to też nie pomogło. Prosze o pomoc.