• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z BIND_PARAM() w config, wywyłując funkcję z innej podstrony.

VPS Starter Arubacloud
0 głosów
204 wizyt
pytanie zadane 1 września 2020 w PHP przez Paweł Barszcz Użytkownik (950 p.)
Cześć, mam problem z bind_param, Funkcja sama w sobie działa, ale po includowaniu jej do innej podstrony - wyrzuca jakieś problemy. Szukam błędu już kilka godzin, ale wszystko na marne.

Opiszę sytuację:

GŁÓWNY KATALOG / config.php ( tutaj przechowuję funkcję )
Funkcja ta działa bez problemu jak ją wywołam na czystej stronie, a mianowicie: GŁÓWNY KATALOG / SITES / DEMO.PHP.

Problem jest natomiast wtedy, kiedy do strony /DEMO.PHP wczytuję dane poprzez jquery z pliku: GŁÓWNY KATALOG / ENGINE / PRODUKT / GET_OFFER.PHP - tutaj załączam plik config.php i zwyczajnie próbuję wyświetlić, natomiast wyrzuca błąd: "Fatal error: Uncaught Error: Call to a member function bind_param() on bool in /config.php:67
Stack trace:
#0 /engine/produkt/get_offer.php(153): rateSystem('cat',10,'view');
 

Dla testów uprościłem maksymalnie funkcję tylko do wyświetlenia zwykłego echo, nadal jest to samo.
komentarz 1 września 2020 przez Arkadiusz Waluk Ekspert (287,550 p.)
Próbujesz wywołać metodę bind_param() na wartości typu bool, co nie może się udać - powinien tam być obiekt klasy mysqli_stmt. Tyle widać po błędzie, bez kodu raczej nikt nic więcej nie powie.
komentarz 1 września 2020 przez Paweł Barszcz Użytkownik (950 p.)

Oto wycinek z mojego kodu:

 

$sql = "select AVG(rate_value) FROM `rate` where `id_offer` = ? AND `rate_cat` = ?";
	
	$stmt = $connect_sql->prepare($sql);
	$stmt->bind_param('is',$id, $category);
	$stmt->execute();
	$stmt->bind_result($avgRate);
	$stmt->fetch();
	
	$stmt->close();

 

komentarz 1 września 2020 przez Paweł Barszcz Użytkownik (950 p.)
Dodam, że ta sama funkcja w TEST.PHP osadzona bezpośrednio w kodzie - działa, ale pobierana poprzez jQuery z folderu /ENGINE/ już nie

2 odpowiedzi

0 głosów
odpowiedź 1 września 2020 przez Arkadiusz Waluk Ekspert (287,550 p.)
prepare() zwraca false gdy wystąpi jakiś błąd bazy. Spróbowałbym w takim razie podejrzeć sobie treść błędu jaki zwraca baza np. poprzez: https://www.php.net/manual/en/mysqli.error.php albo włączył rzucanie błędów jako wyjątki https://stackoverflow.com/a/14578644/6489188
komentarz 2 września 2020 przez Paweł Barszcz Użytkownik (950 p.)
Problem rozwiązany, nie zamykałem nigdzie połączeć $stmt->close()
0 głosów
odpowiedź 1 września 2020 przez Artek Stary wyjadacz (11,800 p.)
Wydaje mi się, że zapytanie jest błędne. Czy nie brakuje GROUP BY? Sprawdź jak wygląda.

Podobne pytania

–2 głosów
2 odpowiedzi 1,767 wizyt
pytanie zadane 29 września 2016 w PHP przez Paweł Barszcz Użytkownik (950 p.)
0 głosów
1 odpowiedź 177 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...