• 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

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
160 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,676 wizyt
pytanie zadane 15 lipca 2018 w PHP przez Hexan Początkujący (430 p.)
0 głosów
1 odpowiedź 87 wizyt
pytanie zadane 27 lipca 2017 w C# przez Stami Gaduła (3,790 p.)
0 głosów
2 odpowiedzi 156 wizyt
pytanie zadane 28 maja 2016 w PHP przez GaCeL Dyskutant (7,510 p.)

89,727 zapytań

138,332 odpowiedzi

309,340 komentarzy

59,649 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 429p. - Argeento
  2. 427p. - nidomika
  3. 396p. - Mikbac
  4. 392p. - ssynowiec
  5. 390p. - Łukasz Eckert
  6. 387p. - TheLukaszNs
  7. 386p. - rucin93
  8. 382p. - Marcin Harasimowicz
  9. 382p. - Michal Drewniak
  10. 378p. - JMazurkiewicz
  11. 373p. - tokox
  12. 367p. - Jarosław Roszyk
  13. 362p. - adrian17
  14. 359p. - overcq
  15. 350p. - Mawrok
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...