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

question-closed Błąd sql/mysql

Object Storage Arubacloud
0 głosów
319 wizyt
pytanie zadane 15 lutego 2019 w SQL, bazy danych przez zerakot Obywatel (1,870 p.)
zamknięte 16 lutego 2019 przez zerakot

Witam,

Podczas uruchamiania programu wyskakuje mi taki komunikat:

Recoverable fatal error: Object of class mysqli_result could not be converted to string in C:\xampp\htdocs\math\odbierz.php on line 12

Wie ktoś jak się go pozbyć?

komentarz zamknięcia: Znalezienie odpowiedzi
komentarz 15 lutego 2019 przez wiktoz Mądrala (7,040 p.)
pokaż kod
komentarz 15 lutego 2019 przez zerakot Obywatel (1,870 p.)
<?php
session_start();

$odbierz = $_POST['odbierz'];
$login = $_SESSION['login'];

if(isset($odbierz))
{
	$connect = mysqli_connect('localhost', 'root', '', 'www');
	$zapytanie = 'SELECT * FROM wiadomosci WHERE od="'.$login.'" AND do="'.$odbierz.'"';
	$wynik = mysqli_query($connect, $zapytanie);
	echo $wynik;
}


?>

Zmienne są określone

2 odpowiedzi

0 głosów
odpowiedź 16 lutego 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
wybrane 16 lutego 2019 przez zerakot
 
Najlepsza
Zobacz sobie co zwraca mysqli_query: http://php.net/manual/en/mysqli.query.php#refsect1-mysqli.query-returnvalues - w przypadku poprawnego zapytania SELECT jest to obiekt, więc nie możesz go tak po prostu wyświetlić, to chyba logiczne. A tu masz opisany zwrócony obiekt i to co możesz z nim zrobić: http://php.net/manual/en/class.mysqli-result.php Należałoby zrobić wybranego fetcha i wyświetlić już konkretną daną.
komentarz 16 lutego 2019 przez zerakot Obywatel (1,870 p.)
A  jak zrobić fetcha?
komentarz 16 lutego 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
Podlinkowałem dokładnie tam, gdzie dostępne są metody jakich możesz użyć.

Po zapytaniu zakładam, że zwróconych rekordów może być wiele, więc może to być fetch_all(), aby wyciągnąć wszystko na raz do jednej tablicy: http://php.net/manual/en/mysqli-result.fetch-all.php Może to być też fetch_assoc()/fetch_array(), ale jeśli rekordów jest wiele to trzeba wykonać go w jakiejś pętli, aby dostać wszystkie. Wszystko zależy w jakim formacie chcesz te dane dostać. Przy każdej z tych funkcji masz przykłady i opis argumentów.

Tak BTW to już nie raz też mówiłem, że Twój kod narażony jest na atak sql injection, co uważam za całkowicie dyskwalifikujące go z jakiegokolwiek użytku.
komentarz 16 lutego 2019 przez zerakot Obywatel (1,870 p.)
Popróbuję te metody. A jak zabezpieczyć się przed takimi atakami?
komentarz 16 lutego 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
Wystarczy bindować wszelkie wartości do zapytania. Wtedy samo zapytanie idzie osobno i wartości osobno - nie ma możliwości, aby przesłać coś, co zmieni zapytanie i wykona niepożądany kod. W przypadku mysqli możesz użyć po kolei: prepare() (przygotowanie samego zapytania bez wartości), bind_param() (wstawienie tych wartości) i execute() (wykonanie zapytania).
komentarz 16 lutego 2019 przez zerakot Obywatel (1,870 p.)
Ok, popróbuję, ale nie wiem gdzie umieścić tego fetcha i jak go użyć. Mógł by pan pokazać jak to ma wyglądać? Dodam, że w mojej tabeli kolumny to: id, od, tekst, do
komentarz 16 lutego 2019 przez Arkadiusz Waluk Ekspert (287,950 p.)
Tak jak mówiłem, w dokumentacji wszystko jest opisane, tutaj przykład (strukturalnie i niżej obiektowo) dla fetch_assoc(): http://php.net/manual/en/mysqli-result.fetch-assoc.php#refsect1-mysqli-result.fetch-assoc-examples - jeśli chcesz uzyskać tablicę asocjacyjną dla każdego rekordu to może być. Mając wiele rekordów może to być właśnie taka pętla. Gdyby był zawsze jeden wystarczyłoby samo fetch_assoc() bez pętli. fetch_array() jest bardzo podobne, z tym że możesz doprecyzować jakiej tablicy oczekujesz: http://php.net/manual/en/mysqli-result.fetch-array.php
fetch_object() z kolei zwróci tablicę obiektów jeśli masz taką potrzebę: http://php.net/manual/en/mysqli-result.fetch-object.php#refsect1-mysqli-result.fetch-object-examples Przy fetch_all() nie widzę przykładu, ale z grubsza podobnie - wywołujesz go na obiekcie mysqli_result czyli tym co zwróci query i dostajesz tablicę ze wszystkimi rekordami na raz (gdzie w poprzednich trzeba iterować pętlą po każdym po kolei).
1
komentarz 16 lutego 2019 przez zerakot Obywatel (1,870 p.)
ok, dziękuję
0 głosów
odpowiedź 16 lutego 2019 przez OdsetekGlupoty Pasjonat (15,360 p.)
Witam,

Nie możesz wyświetlić echem zmiennej, do której przypisałeś obiekt. Co chcesz wyświetlić?
komentarz 16 lutego 2019 przez zerakot Obywatel (1,870 p.)
Chcę wyświetlić wynik zapytania (string)

Podobne pytania

0 głosów
0 odpowiedzi 236 wizyt
pytanie zadane 12 lutego 2019 w SQL, bazy danych przez zerakot Obywatel (1,870 p.)
0 głosów
1 odpowiedź 280 wizyt
pytanie zadane 22 lutego 2019 w SQL, bazy danych przez zerakot Obywatel (1,870 p.)
0 głosów
1 odpowiedź 191 wizyt
pytanie zadane 21 lutego 2019 w SQL, bazy danych przez zerakot Obywatel (1,870 p.)

92,565 zapytań

141,416 odpowiedzi

319,598 komentarzy

61,948 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!

...