Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: złożone zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
maciu
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
mhs
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 "{"?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.