• 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

Object Storage 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,928 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 196 wizyt
pytanie zadane 28 maja 2016 w PHP przez GaCeL Dyskutant (7,500 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...