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

SQL query ze zmienną sesyjną

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
499 wizyt
pytanie zadane 27 stycznia 2018 w PHP przez Bakr Mądrala (6,850 p.)

Witam,

 

Jak zastosować SQL query ze zmienną sesyjną. Mój aktualny kod wygląda tak:

 $rowTask=$result=$mysqli->query("SELECT * FROM recipes WHERE login ={$_SESSION['current_log']}");
      
      
        while($rowTask = $result->fetch_object()) {

          ?>
<img src="<?php echo $rowTask->img; ?>" alt="">

Wynik tego kodu generuje błąd:

 

Fatal error: Call to a member function fetch_object() on a non-object in/home/cabox/workspace/recipes/user-recipes.phpon line32

1 odpowiedź

0 głosów
odpowiedź 27 stycznia 2018 przez Arkadiusz Waluk Ekspert (289,990 p.)

Błąd mówi, że nie da się wywołać metody fetch_object() na czymś, co nie jest obiektem.

Sprawdzamy więc co się mogło stać, że nie ma tam obiektu: http://php.net/manual/en/mysqli.query.php

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

Przypuszczalnie będzie tam false, czyli błąd. I teraz patrzymy w zapytaniu - czy czasem login z sesji nie jest stringiem? Bo jeśli jest to wypadałoby go wstawić w cudzysłowy/apostrofy. A jeszcze lepiej byłoby wszystkie wartości bindować.

komentarz 27 stycznia 2018 przez Arkadiusz Waluk Ekspert (289,990 p.)
Dziwne. Jak zapisałeś z tym prepare?
komentarz 27 stycznia 2018 przez Bakr Mądrala (6,850 p.)
$rowTask=$result=$mysqli->prepare("SELECT * FROM recipes WHERE login =?");
      $rowTask->bind_param('s',$_SESSION["current_log"]);
      $rowTask->execute();
      
        while($rowTask = $result->fetch_object()) {

 

komentarz 27 stycznia 2018 przez Arkadiusz Waluk Ekspert (289,990 p.)

Dziwne, u mnie działa. Zostaw tylko linijkę z prepare() i za nią wyświetl sobie ostatni błąd, np.:

echo $mysqli->error;

Może tu coś ciekawego baza powie.

komentarz 27 stycznia 2018 przez Bakr Mądrala (6,850 p.)

literówka w bazie ;/

 

Teraz pojawia się:

Fatal error
: Call to undefined method mysqli_stmt::fetch_object() in
/home/cabox/workspace/recipes/user-recipes.php
on line
32

 

komentarz 27 stycznia 2018 przez Arkadiusz Waluk Ekspert (289,990 p.)
Z tego co przeczytałem trzeba jeszcze wywołać metodę get_result() na obiekcie zapytania (u Ciebie $rowTask) i dopiero ona zwróci obiekt mysqli_result na którym możesz wykonać np. fetch_object().

Podobne pytania

0 głosów
1 odpowiedź 313 wizyt
pytanie zadane 24 kwietnia 2019 w SQL, bazy danych przez sapero Gaduła (4,100 p.)
0 głosów
1 odpowiedź 432 wizyt
pytanie zadane 8 sierpnia 2020 w Java przez Szyszka Gaduła (3,510 p.)
0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 15 stycznia 2021 w PHP przez CSSoup Mądrala (6,460 p.)

93,175 zapytań

142,185 odpowiedzi

321,977 komentarzy

62,506 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1401p. - dia-Chann
  2. 1380p. - Łukasz Piwowar
  3. 1372p. - CC PL
  4. 1370p. - Łukasz Eckert
  5. 1351p. - Tomasz Bielak
  6. 1312p. - Łukasz Siedlecki
  7. 1302p. - rucin93
  8. 1217p. - Michal Drewniak
  9. 1181p. - rafalszastok
  10. 1164p. - Adrian Wieprzkowicz
  11. 1155p. - Piotr Aleksandrowicz
  12. 1149p. - Michał Telesz
  13. 1124p. - ssynowiec
  14. 1101p. - Dominik Łempicki (kapitan)
  15. 1087p. - Marcin Putra
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! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...