Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zapytanie do bazy działa na localhost na linuxpl już nie
Forum PHP.pl > Forum > Przedszkole
m72
Witam wszystkich.
Powiedzcie mi czemu na localhoscie zapytanie do bazy działa a na linuxpl już nie.


  1. <?php
  2.  
  3. $db=new mysqli('localhost','user,'pass','baza');
  4. if (mysqli_connect_errno()){
  5. echo 'Błąd połączenia z bazą';
  6. exit;
  7. }
  8. echo '1','<br>';
  9. $zapytanie="select id_PRODUKT from PRODUKTY where PRODUKT like '%piwo%';";
  10. echo '2','<br>';
  11. $wynik=$db->query($zapytanie);
  12. echo '3','<br>';
  13. $ile_znalezionych=$wynik->num_rows;
  14. echo '4','<br>';
  15. for ($i=0; $i <$ile_znalezionych; $i++){
  16. echo '5','<br>';
  17. $wiersz=$wynik->fetch_assoc();
  18. echo '6','<br>';
  19. $nazwa=$wiersz['id_PRODUKT'];
  20. echo '7','<br>';
  21. echo $nazwa;
  22. echo '<br>','8','<br>';
  23. }
  24. echo '9','<br>';
  25. $wynik->free();
  26. echo '10','<br>';
  27. $db->close();
  28. echo '11','<br>';
  29.  
  30. ?>

Przyjmijmy ze baza na localu i linuxpl jest identyczna bo wydając polecenia z konsoli na linuxpl działa, ale za pośrednictwem pliku php już nie.
Łączę się przez PUTTY z linuxpl jako ten sam user co w skrypcie, uprawnienia do bazy też są pełne.
Nie działa także w takiej kombinacji że z "lokalnego" skryptu łączę się ze zdalną bazą na linux pl z tą różnicą że błędu nie wywala.
Na obrazkach widać do którego "echa" dochodzi skrypt .
Na localhoscie skrypt działa:

Na linuxpl nie:



!*!
Pokaż całość. Popraw kod, bo już Ci nawet kolorowanie mówi że jest źle. I brakuje obiektu do którego się odwołujesz.
m72
Jakbym wiedział co mam poprawić to bym to zrobił.
Kod jest żywcem przekopiowany oprócz haseł itp.
Z resztą na obrazkach widzisz ze on działa na lokalnym kompie
a na zdalnym nie. Nie bez powodu umieściłem temat w dziale przedszkole
bo jestem jak widać początkujący. Uwagi "popraw kod" nic nie wnoszą wiec
sobie daruj.

Szymciosek
Samo kodowanie, czyli widzisz, że kolorki się sypią: dokładniej tutaj $db=new mysqli('localhost','user,'pass','baza');


No i !*! ma rację, pokaż więcej kodu. Wywołujesz tutaj jakąś metodę free(), ale jej nie pokazujesz nam.
!*!
Ktoś kto jest początkujący powinien znać podstawy o których mówi pierwszy lepszy kurs.

  1. $db=new mysqli('localhost','user,'pass','baza');

zamień na
  1. $db=new mysqli('localhost','user','pass','baza');


Zapewne to nie rozwiąże problemu, zwykła pomyłka przy kopiowaniu?
Na localhost nie widzisz błędu, bo jest wyłączone ich pokazywanie (sprawdź). error_reporting

Bezpośrednio w
  1. $wynik=$db->query($zapytanie);

nie ma
  1. $wynik->free();


więc jak chcesz się do tego odwołać, co to jest to free? I napisz z czego korzystasz.
sowiq
Abra kadabra, czary mary, udzielam odpowiedzi.

Najprawdopodobniej na localhoście Twoje rozwiązanie działa, bo zapytanie zwraca jakieś rekordy, bo Twoja pętla się wykonuje - widać to po wyświetlonych cyferkach. Natomiast na serwerze wynik zapytania jest pusty, w magicznej bibliotece do obsługi bazy danych nie jest tworzony żaden obiekt, więc nie ma czego zwalniać z pamięci.

Tada nerdsmiley.png
Thorang Hoog
Wielkość liter jest identyczna w nazwach tabel?
m72
Dzięki wszystkim za podpowiedzi, jak wrócę z pracy to postaram się to wszystko jeszcze raz opisać ale dokładnie łącznie z samą bazą.
Co do "złych kolorków" to pewnie coś przy wklejaniu kodu na forum się psuje.



Problem rozwiązany (prawie) w linii 9 na samym końcu jest niepotrzebny średnik, myślałem że on ma być, tak jak to się klepie bezpośrednio w konsoli na zakończenie zapytania.
Pozostaje jednak pytanie dla czego to działało na lokalu a na zdalnym serwerze nie ! smile.gif Pytanie to może pozostać bez odpowiedzi wink.gif
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.