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

question-closed PHP i mysqli zapytanie w zapytaniu - błąd obiektu

42 Warsaw Coding Academy
0 głosów
369 wizyt
pytanie zadane 9 listopada 2015 w PHP przez Pytający Początkujący (290 p.)
zamknięte 9 listopada 2015 przez Pytający

Witam,

Zacząłem prace z mysqli - wcześniej bazowałem na starszej wersji mysql.
Z obiektowością niestety na chwile obecną mam mało do czynienia i przez to pewnie nie mogę rozgryźć problemu, a temat mam niestety pilny.

Mianowice mam taki kod:

if ($sql =  $baza->prepare("SELECT id, nazwa FROM blog_kategoria"))
{					  
  $sql->execute();
  $sql->bind_result($id, $nazwa);
  while ($sql->fetch())
  {						  
   $sql2 =  $baza->prepare("SELECT count(id) as ilosc FROM blog_wpis WHERE id='".$id."'");							  
	$sql2->execute();
	$sql2->bind_result($ilosc);
	$sql2->fetch();
	$sql2->close();		
   echo '<li>'.$nazwa.'('.$ilosc.')</li>';				 
  }				  
 $sql->close();
 }	

Błąd: Fatal error: Call to a member function execute() on a non-object

Powinien mi wypisywać listę kategorii oraz ilość wpisów w danej kategorii.
Wiem że da się to zrobić w jednym zapytaniu SQL łącząc dwie tabele, ale to jest jeden przykład z wielu w których z mysql nie miałem problemu.
Głównie chodzi mi o to jak wykonać zapytanie w zapytaniu w mysqli?
Dodam że jeżeli utworze nowe połączenie do mysql $baza2 i zmienię w pętli na to drugie połączanie to zadziała.
Z góry dzięki za pomoc.

komentarz zamknięcia: Rozwiązane

1 odpowiedź

0 głosów
odpowiedź 9 listopada 2015 przez Boshi VIP (100,240 p.)
Imo ten kod sensu nie ma.  Na pewno drugie zapytanie ma nie być w pętli. Złącz to jak człowiek w jedną tabelę za pomocą inner/left czy co tam chcesz.

Nie wiadomo  o którego excetute mu chodzi ale domyślam się, że  masz coś nie tak ze składnią.
komentarz 9 listopada 2015 przez Pytający Początkujący (290 p.)
Wiem że jest to do zrobienia w jedym zapytaniu, głównie chodziło mi o to jak robić podobne operacje mianowicie gdy zapytanie jest w zapytaniu.
Przy zwkłym mysql nie ma z tym problemu, w tym przypadku gdy utworze drugie połączenie do bazy i w pętli będę operował na drugim połaczeniu to też zadziała.
komentarz 9 listopada 2015 przez Boshi VIP (100,240 p.)
no ale nie  wiadomo o którego excecute mu chodzi nawet.. nie podałeś. Czemu upierasz się przy czymś takim?
komentarz 9 listopada 2015 przez Pytający Początkujący (290 p.)
chodzi mu o ten drugi excecute (linia kodu na niego wskazuje), nie upieram się tylko gdy robiłem podobne operacje w zwykłym mysql wszystko działało a teraz nie chce zadziałać.

Niekiedy nie jestem wstanie dojść jak zrobić podobne operacje w jednym zapytaniu i lepiej byłoby mi robić coś takiego jak pisałem. A po za tym na pewno zdarzy sie jakiś przypadek w którym będę musiał wywyłać jakieś zapytanie w zapytaniu i znowu natrafie na taki błąd
komentarz 9 listopada 2015 przez efiku Szeryf (75,160 p.)
http://php.net/manual/en/mysqli.prepare.php

Generalnie to zapraszam do manuala.

Ja bym proponował przejść na PDO
komentarz 9 listopada 2015 przez Pytający Początkujący (290 p.)
Zrobiłem identyczną operacje tylko z użyciem PDO i śmiga :) Zamykam, dzięki.
komentarz 9 listopada 2015 przez efiku Szeryf (75,160 p.)
Przeczytaj sobie to w wolnej chwili :)

https://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO

Nie ma za co i powodzenia ;)

 

mysqli pff haha

Podobne pytania

0 głosów
1 odpowiedź 513 wizyt
pytanie zadane 15 lutego 2018 w PHP przez daniel2k Obywatel (1,380 p.)
0 głosów
2 odpowiedzi 151 wizyt
pytanie zadane 23 maja 2015 w SQL, bazy danych przez shadax Obywatel (1,850 p.)
0 głosów
3 odpowiedzi 500 wizyt
pytanie zadane 15 listopada 2015 w PHP przez Radekoslaw123 Gaduła (3,080 p.)

93,379 zapytań

142,380 odpowiedzi

322,533 komentarzy

62,734 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...