Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> złożone zapytanie, z dwóch tabel
maciu
post 28.07.2004, 11:22:35
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

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


mam takie zapytanie
  1. SELECT cms_page.id, cms_plaintext.text FROM cms_page, cms_plaintext WHERE cms_page.id=cms_plaintext.tid AND (
  2. cms_page.template_dir = "'.$url_szablonu['pop'].'" OR cms_page.template_dir = "'.$url_szablonu['rock'].'" OR cms_page.template_dir = "'.$url_szablonu['hiphop'].'" OR cms_page.template_dir = "'.$url_szablonu['techno'].'" OR cms_page.template_dir = "'.$url_szablonu['klasyka'].'"
  3. ) AND (
  4. )
  5. cms_plaintext.hid='artysta' AND cms_plaintext.text LIKE "%'.addslashes($_GET['q']).'%"
  6. ) OR (
  7. cms_plaintext.hid='tytul' AND cms_plaintext.text LIKE "%'.addslashes($_GET['q']).'%"
  8. )
  9. )
  10. ORDER BY cms_plaintext.text ASC


Błąd w tym zapytaniu występuje w tym miejscu:
  1. {
  2. (
  3. cms_plaintext.hid='artysta' AND cms_plaintext.text LIKE "%'.addslashes($_GET['q']).'%"
  4. ) OR ({
  5. cms_plaintext.hid='tytul' AND cms_plaintext.text LIKE "%'.addslashes($_GET['q']).'%"
  6. )
  7. )


Tabela cms_plaintext ma takie pola:
HID - jego wartością jest rodzaj tekstu jaki znajduje się w polu TEXT
Zapytanie ma wyglądać w ten sposób, aby wybrał te rekordy w których HID=artysta i TEXT zawierał odpowiene słowo wpsane w formularzu lub HID=tytul i TEXT zawierał odpowiene słowo wpsane w formularzu

Ty zapytanie wywala taki błąd
Kod
You have an error in your SQL syntax near '{ cms_plaintext.hid="nowosci_artysta" and cms'


Jeśli w zapytaniu użyje tylko jednego warunku
  1. cms_plaintext.hid='tytul' AND cms_plaintext.text LIKE "%'.addslashes($_GET['q']).'%"

a nie dwóch, czyli kod wyglądałby tak:
  1. SELECT cms_page.id, cms_plaintext.text FROM cms_page, cms_plaintext WHERE cms_page.id=cms_plaintext.tid AND (
  2. cms_page.template_dir = "'.$url_szablonu['pop'].'" OR cms_page.template_dir = "'.$url_szablonu['rock'].'" OR cms_page.template_dir = "'.$url_szablonu['hiphop'].'" OR cms_page.template_dir = "'.$url_szablonu['techno'].'" OR cms_page.template_dir = "'.$url_szablonu['klasyka'].'"
  3. ) AND cms_plaintext.hid="'.$hid_artysta.'" AND cms_plaintext.text LIKE "%'.addslashes($_GET['q']).'%"
  4.  
  5. ORDER BY cms_plaintext.text ASC

to wtedy wyświetla prawidłowe wyniki, oczywiście bez tego drugiego warunku

Ten post edytował maciu 28.07.2004, 12:20:36
Go to the top of the page
+Quote Post
mhs
post 28.07.2004, 11:43:41
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


beznadziejnie sie ten post czyta (zwlaszcza to Twoje zapytanie ktore dla mnie nie jest czytelne) i za bardzo nie wiem o co w tym wszystkim biega, ale czy przypadkiem zamiast nawiasu "(" nie uzywasz "{"?
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 31.07.2025 - 07:49