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

0

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())
	{						  
	   $sql =  $baza->prepare("SELECT count(id) as ilosc FROM blog_wpisy WHERE id='".$id."'");
		{					  
			$sql->execute();
			$sql->bind_result($id);
		}								  
	 echo '<li>'.$nazwa.'('.$ilosc.')</li>';				 
	}				  
   $sql->close();
 }	  

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?
Z góry dzięki za pomoc.

0

Zastosuj dwie inne nazwy zmiennych, bo się kolidują.

0

Próbowałem już wcześniej zmieniać ale ciągle ten sam błąd:
Fatal error: Call to a member function execute() on a non-object

Doszedłem do tego że jeżeli stworzył bym drugie połączanie do bazy np:

$baza2 = @new  mysqli($dbhost, $user, $pass, $dbname);
  if (mysqli_connect_errno())  die( "Blad: ".mysqli_connect_error() );
  $baza2->set_charset("utf8"); 

i zmienił $baza w pętli na $baza2 to by zadziałało ale tak raczej nie powinno działać.

0

Nie myślisz. Inne nazwy zmiennej sql.

0

Jak wcześniej pisałem, zmieniałem wszystkie nazwy zmiennych które są w pętli while i nic to nie dawało bo był ten sam błąd.
Jedyne co, to zmiana wszystkich zmiennych oraz zmiennej $baza na $baza2 po wcześniejszym stworzeniu tego połączenia jako drugie.

Może dalej nie zmieniam tego jak potrzeba?

0

Pokaz kod ze zmianą (utworzeniem drugiej) sql.

0

Tak nie działa:

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();
 }	 

Tak działa:

 if ($sql =  $baza->prepare("SELECT id, nazwa FROM blog_kategoria"))
{					  
	$sql->execute();
	$sql->bind_result($id, $nazwa);
	while ($sql->fetch())
	{						  
	 $sql2 =  $baza2->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();
 }	

1 użytkowników online, w tym zalogowanych: 0, gości: 1