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

Zapytanie select do bazy mysql z warunkiem WHERE session= session_id();

0 głosów
1,247 wizyt
pytanie zadane 14 lipca 2016 w SQL, bazy danych przez majdrzej Nowicjusz (180 p.)

Mam w bazie danych tabele orders.
Dodaję do tabeli orders jakiś wiersz

Mogę teraz zapytamiem SELECT wyświetlić wszystkie dane

<?php
session_start();
	$sql = "SELECT * FROM orders ";
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    // Dane wyjściowe z każdego wiersza
    while($row = $result->fetch_assoc()) {
        echo "order_id: &nbsp; " . $row["order_id"]. "  &nbsp;- Currency: &nbsp; " . $row["currency"]. "  &nbsp;Data &nbsp;" . $row["date"]. " &nbsp; Session &nbsp;" . $row["session"]. "<br>";
    }
} else {
    echo "0 results";
}


?>

I wszystko bardzo ładnie wyświetla się
 Ale gdy chcą wyświetlić wiersz dodany w tej sesji stosując warunek session= session_id(); to już wyświetla się brak obiektu i 0 results

 <?php
	$sql = "SELECT * FROM orders WHERE session=". session_id();
$result = $conn->query($sql);
 if ($result->num_rows > 0) {
    // Dane wyjściowe z każdego wiersza
    while($row = $result->fetch_assoc()) {
        echo "order_id: &nbsp; " . $row["order_id"].  "<br>";
    }
} else {
    echo "0 results";
}
?>

Co robię źle ?

 

3 odpowiedzi

0 głosów
odpowiedź 14 lipca 2016 przez kosaa Stary wyjadacz (14,130 p.)
czy w skrypcie gdzie używasz session_id() dałeś session_start() ?
komentarz 14 lipca 2016 przez kosaa Stary wyjadacz (14,130 p.)
to co kolega wyżej napisał pomogło? tj. session_id na cudzysłowia

p.s. porównaj session id z bazy z tym które się generuje, mogą być inne
komentarz 14 lipca 2016 przez majdrzej Nowicjusz (180 p.)
session_id() i to z bazy są identyczne

co to znaczy na cudzysłowia ?
komentarz 14 lipca 2016 przez kosaa Stary wyjadacz (14,130 p.)

takie ło

$sql = 'SELECT * FROM orders WHERE session= "'. session_id() .'"';

 

komentarz 14 lipca 2016 przez majdrzej Nowicjusz (180 p.)
Bardzo dziękuję, \pomogło.
komentarz 15 lipca 2016 przez kosaa Stary wyjadacz (14,130 p.)
tak jak napisał kolega, przy zapytaniach SQL gdzie używasz napisów musisz te napisy dać w cudzysłów
0 głosów
odpowiedź 14 lipca 2016 przez writen Nałogowiec (29,060 p.)
Identyfikator sesji to string, a stringi wewnątrz kwerend SQL należy wstawiać w apostrofach.

Lepszym rozwiązaniem byłoby skorzystanie z PDO oraz Prepared Statements (podpinanie/bindowanie).
0 głosów
odpowiedź 14 lipca 2016 przez xandros Nałogowiec (29,420 p.)

Podobne pytania

0 głosów
0 odpowiedzi 293 wizyt
pytanie zadane 17 czerwca 2016 w SQL, bazy danych przez Adam Nowicki Obywatel (1,600 p.)
0 głosów
1 odpowiedź 607 wizyt
pytanie zadane 12 maja 2020 w SQL, bazy danych przez Bakkit Dyskutant (7,600 p.)
0 głosów
2 odpowiedzi 3,962 wizyt
pytanie zadane 10 grudnia 2016 w PHP przez niezalogowany

93,772 zapytań

142,730 odpowiedzi

323,382 komentarzy

63,369 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...