Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Co robię źle w zapytaniu z LIKE ?
roobik
post
Post #1





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam!
Pomóżcie proszę... Mam takie zapyt:
  1. $query = "SELECT * FROM alkohole WHERE kat=2 AND title like \"%PIWO%\" AND status=0 ORDER BY data DESC LIMIT 3";

Niestety, nic mi nie wyświetla. Gdzieś mam byka, czy cuś?

Nazwa tabeli i pól są ok...
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Adi32
post
Post #2





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


'%PIWO%' może pomoże.


--------------------
Wolałem języki z rodziny C ale poszedłem na łatwizne...
Go to the top of the page
+Quote Post
mortus
post
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Jeśli masz byka, to poniższy kod pokaże, gdzie tego byka masz:
  1. $sql = "SELECT * FROM alkohole WHERE kat=2 AND title like \"%PIWO%\" AND status=0 ORDER BY data DESC LIMIT 3";
  2. $results = mysql_query($sql) or die(mysql_error());
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




@roobik to cały kod?


--------------------
Go to the top of the page
+Quote Post
roobik
post
Post #5





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(Adi32)
'%PIWO%' może pomoże

Niestety - nie pomogło sad.gif

@mortus - Wywaliło mi:
Query was empty.
Czyli "puste" zapytanie? Hm...

Cytat(wookieb)
@roobik to cały kod?

To tylko zapytanie. Potem daję
  1. $result = mysql_query($query);

...i pętelka z wyświetlaniem. Zapytanie (w sensie logicznym) nie może być empty, bo w tabeli jest wiele rekordów zawierających PIWO. Chyba normalnie zaraz skoczę po piwo smile.gif

Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Zapytanie zapisujesz do $sql a do mysql_query wrzucasz $query...
Przeczytaj Temat: Jak poprawnie zadac pytanie i wróć


--------------------
Go to the top of the page
+Quote Post
roobik
post
Post #7





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(wookieb)
Przeczytaj Temat: Jak poprawnie zadac pytanie i wróć

Myślę, że poprawnie zadałem pytanie. Pytam właśnie o zapytanie. Bo reszta jest ok. Tak więc problem leży w zapytaniu, dlatego też pytałem o błąd w nim wystepujący. Ale ok:
  1. $query = "SELECT * FROM alkohole WHERE kat=2 AND title like \"%PIWO%\" AND status=0 ORDER BY data DESC LIMIT 3";
  2. $result = mysql_query($query);
  3. while($r = mysql_fetch_array($result)) {
  4. $id = $r['id'];
  5. $title = $r['title'];
  6. $date = $r['data'];
  7. $ile_odslon = $r['op'];
  8. echo '<p class="mirt"><a class="pack" href="'.$PHP_SELF.'?view='.$id.'">'.$title.'</a><br>
  9. <font class="mini"">Odsłon: <b>'.$ile_odslon.'</b> | Dodano: '.$date.'</font></p>';
  10. }


Ten post edytował roobik 6.01.2012, 17:24:11
Go to the top of the page
+Quote Post
mortus
post
Post #8





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Zmień tę drugą linijkę w Twoim kodzie na:
  1. $result = mysql_query($query) or die(mysql_error());

i napisz, czy wywala jakiś błąd, czy nie.
Włącz wyświetlanie błędów i ustaw raportowanie błędów na 'wszystkie' na początku pliku:
  1. ini_set('display_error', 'on');

Jeśli zapytanie nie działa, to pętla while powinna przerwać działanie skryptu.
Go to the top of the page
+Quote Post
roobik
post
Post #9





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


@mortus, tak, jak pisałem wcześniej, wywaliło mi Query was empty.

Cytat(mortus)
Jeśli zapytanie nie działa, to pętla while powinna przerwać działanie skryptu

I tak własnie jest.

Bez tej części
  1. AND title like \"%PIWO%\"

wyświetla poprawnie. Ale własnie chodzi mi o wyświetlanie tytułów, w których PIWO wystepuje. Hmmm...
Go to the top of the page
+Quote Post
mortus
post
Post #10





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


No to przed wykonaniem zapytania sprawdź zmienną $query - var_dump($query);.
Go to the top of the page
+Quote Post
roobik
post
Post #11





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Zrobiłem, jak piszesz:
Cytat(mortus)
przed wykonaniem zapytania sprawdź zmienną $query - var_dump($query);

I wywaliło mi:
Cytat
string(96) "SELECT * FROM alkohole WHERE kat=2 AND title like \"%PIWO%\" AND status=0 ORDER BY data DESC LIMIT 3"


Ten post edytował roobik 6.01.2012, 19:08:18
Go to the top of the page
+Quote Post
mortus
post
Post #12





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


A powinno wyświetlić:
Cytat
string(98) "SELECT * FROM alkohole WHERE kat=2 AND title like "%PIWO%" AND status=0 ORDER BY data DESC LIMIT 3"


Zatem upewnij się, że zmienną $query zapisujesz tak, jak tutaj tj. w cudzysłowach, a nie w apostrofach.
Go to the top of the page
+Quote Post
roobik
post
Post #13





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Zmieniłem.
  1. $query = "SELECT * FROM alkohole WHERE kat=2 AND title like \"%PIWO%\" AND status=0 ORDER BY data DESC LIMIT 3";

na to:
  1. $query = 'SELECT * FROM alkohole WHERE kat=2 AND title like \"%PIWO%\" AND status=0 ORDER BY data DESC LIMIT 3';

Czyli całe zapytanie jest teraz w apostrofach, a tylko PIWO jest w cudzysłowiu.
Fakt, wyświetla teraz:
Cytat
string(98) "SELECT * FROM alkohole WHERE kat=2 AND title like "%PIWO%" AND status=0 ORDER BY data DESC LIMIT 3"

ale i tak nie zmienia to faktu, że po usunięciu var_dump($query); nic się nie dzieje...
Go to the top of the page
+Quote Post
gorden
post
Post #14





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

Ostrzeżenie: (0%)
-----


ale jak dałeś to w apostrofach to po co z kolei backslashe koło cudzysłowów ?
Go to the top of the page
+Quote Post
mortus
post
Post #15





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Cytat(roobik @ 6.01.2012, 19:10:58 ) *
Zmieniłem.
  1. $query = "SELECT * FROM alkohole WHERE kat=2 AND title like \"%PIWO%\" AND status=0 ORDER BY data DESC LIMIT 3";

na to:
  1. $query = 'SELECT * FROM alkohole WHERE kat=2 AND title like \"%PIWO%\" AND status=0 ORDER BY data DESC LIMIT 3';

Czyli całe zapytanie jest teraz w apostrofach, a tylko PIWO jest w cudzysłowiu.
Fakt, wyświetla teraz:

ale i tak nie zmienia to faktu, że po usunięciu var_dump($query); nic się nie dzieje...

Kolego, chyba się gubisz w "zeznaniach" wink.gif . Pokaż cały poprawiony kod.
Go to the top of the page
+Quote Post
roobik
post
Post #16





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Usunięcie backslash'y wyświetla znowu 96

Poprawiony kod (i tak nie działający sad.gif )
  1. $query = 'SELECT * FROM alkohole WHERE kat=2 AND title like "%PIWO%" AND status=0 ORDER BY data DESC LIMIT 3';
  2. $result = mysql_query($query);
  3. while($r = mysql_fetch_array($result)) {
  4. $id = $r['id'];
  5. $title = $r['title'];
  6. $date = $r['data'];
  7. $ile_odslon = $r['op'];
  8. echo '<p class="mirt"><a class="pack" href="'.$PHP_SELF.'?view='.$id.'">'.$title.'</a><br>
  9. <font class="mini"">Odsłon: <b>'.$ile_odslon.'</b> | Dodano: '.$date.'</font></p>';
  10. }

Go to the top of the page
+Quote Post
mortus
post
Post #17





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


  1. // na początku pliku
  2. ini_set('display_errors', 'on');
  3. // i dalej
  4. $query = 'SELECT * FROM alkohole WHERE kat=2 AND title like "%PIWO%" AND status=0 ORDER BY data DESC LIMIT 3';
  5. $result = mysql_query($query) or die(mysql_error());
  6. while($r = mysql_fetch_array($result)) {
  7. $id = $r['id'];
  8. $title = $r['title'];
  9. $date = $r['data'];
  10. $ile_odslon = $r['op'];
  11. echo '<p class="mirt"><a class="pack" href="'.$PHP_SELF.'?view='.$id.'">'.$title.'</a><br>
  12. <font class="mini"">Odsłon: <b>'.$ile_odslon.'</b> | Dodano: '.$date.'</font></p>';
  13. }


Ten post edytował mortus 6.01.2012, 21:10:57
Go to the top of the page
+Quote Post
roobik
post
Post #18





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Po dodaniu tego
  1. ini_set(''display_errors', 'on');
  2. error_reporting(E_ALL);

nic się nie wyświetla. Pozostaje dalej to, co było na poczatku:
Cytat
string(96) "SELECT * FROM alkohole WHERE kat=2 AND title like "%PIWO%" AND status=0 ORDER BY data DESC LIMIT 3"


Ten post edytował roobik 6.01.2012, 20:58:19
Go to the top of the page
+Quote Post
mortus
post
Post #19





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Zrobiłem literówkę, skopiuj poprawiony kod z góry.
Go to the top of the page
+Quote Post
roobik
post
Post #20





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Domyśliłem się - wstawiłem jednak backslasha przed jednym z apostrofów. Teraz poprawiłem, jak napisałeś. Niestety - ani nie wywala błędów, ani nic. Tylko zamiast wyświetlać, to co zamierzam, wywala:
Cytat
string(96) "SELECT * FROM alkohole WHERE kat=2 AND title like "%PIWO%" AND status=0 ORDER BY data DESC LIMIT 3"

Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 12:14