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

Object klasy mysqli_result nie może zostać przekonwertowany na stringa

VPS Starter Arubacloud
0 głosów
209 wizyt
pytanie zadane 22 sierpnia 2018 w PHP przez pawlik1992 Nowicjusz (120 p.)
edycja 22 sierpnia 2018 przez pawlik1992

Witam serdecznie. Problem jak w tytule. (z gory przepraszam za brak polskich znakow w niektórych miejscach ale ALT mi raz dziala raz nie dziala...)

Dokladniej:
Jest to plik index.php w ktorym mają być wyświetlone wszystkie połowy. Chciałbym jednak aby zamiast numeru ID ryby, przynety czy haka była pobrana nazwa z innej tabeli i "wsadzona" w daną kolumnę.
Wyświetlanie tej tabeli z samymi ID działa, jednak kiedy w pętli wrzuciłem zapytanie do bazy wyjmujące nazwę tej ryby wyświetla mi błąd "Object of class mysqli_result could not be converted to string"

 

Problem leży gdzieś tutaj (KOD 1)

$zap_nazwa_ryby ="SELECT nazwa FROM ryba WHERE idryba='$ryba_idryba'"; 
$w_zap_nazwa_ryby = $polaczenie->query($zap_nazwa_ryby);

zaś zapytanie do bazy jest poprawne gdyż sprawdzałem je w PHPmyadmin i wyświetla nazwę odpowiedniej ryby.

Reszta kodu -->

<!--  Jesli jest zalogowany przenies go do zalogowany.php -->
<?php
session_start();

if((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true))
{
header('Location: zalogowany.php');
exit();
}
?>

<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>Jakaryba.pl Katalog wynikow wedkarskich.</title>
</head>

<body>

<a href="rejestracja.php">Rejestracja - załóż darmowe konto!</a>
<br /> <br />

<form action="zaloguj.php" method="post">

Login:<br /><input type="text" name="login" /> <br />
Hasło:<br /><input type="password" name="haslo" /> <br />
<input type="submit" value="Zaloguj się"/>

</form>



<p1>ABY DODAWAC SWOJE POLOWY, WYSTARCZY SIE ZAREJESTROWAC! Na ta chwile bedziesz mial dostep do podgladu polowu w ograniczony sposob.</p1>


<table width="900" align="center" border="1" bordercolor="#d5d5d5" cellpadding="0" cellspacing="0">    
<tr>
<?php
require_once 'connect.php';
$polaczenie = mysqli_connect($host, $db_user, $db_password, $db_name);
mysqli_query($polaczenie, "SET CHARSET utf8");
mysqli_query($polaczenie, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");

$zapytanie="SELECT * FROM polow";

$rezultat = mysqli_query($polaczenie, $zapytanie);
$ile = mysqli_num_rows($rezultat);

if ($ile>=1)
{
echo<<<END
<td width="100" align="center" bgcolor="e5e5e5">id polowu</td>
<td width="100" align="center" bgcolor="e5e5e5">data polowu</td>
<td width="100" align="center" bgcolor="e5e5e5">temperatura</td>
<td width="100" align="center" bgcolor="e5e5e5">ryba</td>
<td width="100" align="center" bgcolor="e5e5e5">rozmiar ryby</td>
<td width="100" align="center" bgcolor="e5e5e5">grubosc glownej</td>
<td width="100" align="center" bgcolor="e5e5e5">grubosc przypon</td>
<td width="100" align="center" bgcolor="e5e5e5">rozmiar haka</td>
<td width="100" align="center" bgcolor="e5e5e5">nazwa zanety</td>
<td width="100" align="center" bgcolor="e5e5e5">nick usera </td>
</tr><tr>
END;
}
for ($i = 1; $i <= $ile; $i++)
{

$row = mysqli_fetch_assoc($rezultat);
$idpolow = $row['idpolow'];
$data_polowu = $row['data_polowu'];
$temperatura = $row['temperatura'];
$ryba_idryba = $row['ryba_idryba'];

$zap_nazwa_ryby ="SELECT nazwa FROM ryba WHERE idryba='$ryba_idryba'";
$w_zap_nazwa_ryby = $polaczenie->query($zap_nazwa_ryby);


$glowna_idglowna = $row['glowna_idglowna'];
$przypon_idprzypon= $row['przypon_idprzypon'];
$hak_idhak = $row['hak_idhak'];
$zaneta_idzaneta = $row['zaneta_idzaneta'];
$user_iduser = $row['user_iduser'];


echo<<<END
<td width="100" align="center">$idpolow</td>
<td width="100" align="center">$data_polowu</td>
<td width="100" align="center">$temperatura</td>
<td width="100" align="center">$w_zap_nazwa_ryby</td>
<td width="100" align="center"></td>
<td width="100" align="center">$glowna_idglowna</td>
<td width="100" align="center">$przypon_idprzypon</td>
<td width="100" align="center">$hak_idhak</td>
<td width="100" align="center">$zaneta_idzaneta</td>
<td width="100" align="center">$user_iduser</td>


</tr><tr>
END;

}


?>


</tr>
</table>

<?php
echo $ile;
?>


<!-- Wyswietl blad jesli jest w zmiennej sesyjnej -->
<?php
if(isset($_SESSION['blad']))echo $_SESSION['blad'];
?>



</body>
</html>


Z góry dziękuję za wyrozumiałość i pomoc!

1 odpowiedź

+1 głos
odpowiedź 22 sierpnia 2018 przez StOcK Mądrala (6,100 p.)

Nie napisałeś linii, na którą błąd wskazuje, więc strzelam, ze może chodzić o to:

$row = mysqli_fetch_assoc($rezultat);
$idpolow = $row['idpolow'];
$data_polowu = $row['data_polowu'];
$temperatura = $row['temperatura'];
$ryba_idryba = $row['ryba_idryba'];
 
$zap_nazwa_ryby ="SELECT nazwa FROM ryba WHERE idryba='$ryba_idryba'";
$w_zap_nazwa_ryby = $polaczenie->query($zap_nazwa_ryby);
 
 
$glowna_idglowna = $row['glowna_idglowna'];
$przypon_idprzypon= $row['przypon_idprzypon'];
$hak_idhak = $row['hak_idhak'];
$zaneta_idzaneta = $row['zaneta_idzaneta'];
$user_iduser = $row['user_iduser'];
 
 
echo<<<END
<td width="100" align="center">$idpolow</td>
<td width="100" align="center">$data_polowu</td>
<td width="100" align="center">$temperatura</td>
<td width="100" align="center">$w_zap_nazwa_ryby</td>
<td width="100" align="center"></td>
<td width="100" align="center">$glowna_idglowna</td>
<td width="100" align="center">$przypon_idprzypon</td>
<td width="100" align="center">$hak_idhak</td>
<td width="100" align="center">$zaneta_idzaneta</td>
<td width="100" align="center">$user_iduser</td>
</tr><tr>
END;

Już tłumaczę, w linii 8 wykonujesz zapytanie, które zwraca obiekt, a w linii 22 próbujesz wypisać obiekt jako string.

komentarz 22 sierpnia 2018 przez pawlik1992 Nowicjusz (120 p.)
Tak dokładnie o to chodzi! (już poprawiłem treść pytania).Tylko nadal nie wiem jak to przekonwertować...
1
komentarz 22 sierpnia 2018 przez StOcK Mądrala (6,100 p.)

mysqli_fetch_assoc/mysqli_fetch_object

$ryba=mysqli_fetch_object($w_zap_nazwa_ryby);
echo $ryba->nazwa;

 

komentarz 22 sierpnia 2018 przez pawlik1992 Nowicjusz (120 p.)
Dziękuję! Działa! Zastanawia mnie tylko jak to działa. w zmiennej $ryba jest zapisany obiekt wynikowy zapytania zaś przy wywołaniu echo $ryba jest zrobiony wskaźnik na nazwę z zapytania?
(proszę wybaczyć ale tak to jest jak się liźnie po trochę z różnych języków a później się wszystko kiełbasi!)
1
komentarz 22 sierpnia 2018 przez StOcK Mądrala (6,100 p.)

Dokumentacja

mysqli_fetch_object zwraca obiekt klasy stdClass. Obiekt ten zawiera pola, nazwane tak jak kolumny w bazie. Np jeśli wykonasz zapytanie SELECT * FROM tabela będziesz miał dostęp do wszystkich pól [kolumn] z tabeli.

Oczywiście nie musisz pobierać obiektu, możesz pobrać tablicę (mysqli_fetch_assoc/mysqli_fetch_array)

Podobne pytania

0 głosów
1 odpowiedź 1,922 wizyt
pytanie zadane 15 lipca 2018 w PHP przez Hexan Początkujący (430 p.)
0 głosów
1 odpowiedź 114 wizyt
pytanie zadane 27 lipca 2017 w C# przez Stami Gaduła (3,790 p.)
0 głosów
2 odpowiedzi 192 wizyt
pytanie zadane 28 maja 2016 w PHP przez GaCeL Dyskutant (7,500 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 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!

...