Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z odebraniem sterowania PHP
Forum PHP.pl > Forum > PHP
mindspeo
Witam,

Mam pewien problem którego nie potrafię rozwikłać.

Chodzi o wywołanie funkcji która automatycznie odczytuje linie z SQL i wywołuje mysql_query() na podanym połączeniu.

  1. public static function load_sql_file($filepath, $connection = NULL)
  2. {
  3. $status = TRUE;
  4.  
  5. // Parse and upload SQL definitions
  6. $sql_value = file($filepath);
  7.  
  8. // Init empty query string
  9. $query = "";
  10.  
  11. // Run SQl definitions as file line
  12.  
  13. foreach($sql_value as $sql_line)
  14. {
  15.  
  16. // Trim line and leave comments
  17. if(trim($sql_line) != "" && strpos($sql_line, "--") === false)
  18. {
  19. // Append query line
  20. $query .= $sql_line;
  21.  
  22. // Extract end of sql definition
  23. if (substr(rtrim($query), -1) == ';')
  24. {
  25.  
  26. // Run query
  27. if ( ! $connection)
  28. {
  29. $result = mysql_query($query) or die("Zapytanie niepoprawne:".$query);
  30. }
  31. else
  32. {
  33. $result = mysql_query($query, $connection) or die("Zapytanie niepoprawne:".$query);
  34. }
  35.  
  36. echo var_dump($query);
  37. echo var_dump($result);
  38.  
  39. // Clear query string
  40. $query = "";
  41. }
  42. }
  43. }
  44.  
  45. echo var_dump($status);
  46. die();
  47. return $status;
  48. }


Debugowałem kod linia po linii.

Problem jest w tym, że metoda ta nie oddaje sterowania do miejsca jej wywołania ani nawet wewnątrz niej (questionmark.gif).

W podanym przykładzie i kodzie nic się nie wyświetla - skrypt cały czas się ładuje.
Zakomentowanie poleceń mysql_query() oczywiście umożliwia wyświetlenie statusu i nawet stringów kwerend.
Co ciekawe, wszystkie zapytania zostaja wykonane poprawnie wraz z ostatnią linia załadowanego pliku (exclamation.gif)
Czyli import realizowany jest poprawnie - ale brak sterowania, no i oczywiście funkcja nic nie zwraca dalej więc nie jest możliwe dalsze przetworzenie skryptu w innym miejscu kodu.

Proszę o pomoc.
kipero
Linia 46
mindspeo
Eh... To kod debugujący (normanie nie ma w nim echo i die()) Poza tym nawet nie dochodzi do Linii 46.

Nowe wnioski.
1. Kod importowy ładowany w całości (200kb) blokuje ładowanie - nie oddaje sterowania. Nawet w phpmyadminie ciągle ładuje dopóki czegoś nie kliknę.
2. Podzieliłem kod importowy na 2 części (część danych i część relacji)
3. Wrzucanie ich osobno (niezależnie lub poprzez wywołanie polecenia SQL) nie zwraca żadnych błędów, ładuje się poprawnie itd.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.