Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z zapytaniem Mysql z uzyciem LIKE
Forum PHP.pl > Forum > Przedszkole
pomoc
Witam,

mam problem z zapytaniem Mysql, co dla mnie jest kompletnie nie logiczne i nie umiem sobie z tym poradzic.

Otoz mam takie zapytanie:

  1. $sql = "SHOW TABLES FROM $showDB LIKE 'cms_%'";
  2. $result = mysql_query($sql,$link);
  3.  
  4. IF (!$result) {
  5. echo "DB Error, could not list tables\n";
  6. echo 'MySQL Error: ' . mysql_error();
  7. exit;
  8. }


To zapytanie zwraca mi wszystkie tabele z bazy $showDB z przedrostkiem cms. Wszystko jest ok. Tutaj zmienna $showDB to np. bazanr1.

Teraz problem pojawia sie, jesli nazwa bazy zawiera w sobie "-" czyli jesli $showDB ma wartosc baza-nr1 to zapytanie generuje blad.

DB Error, could not list tables MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-nr1 LIKE 'cms_%'' at line 1

Prosze o pomoc, bo juz wszystkiego probowalem i zmienic ' na " i inne cuda, ktore przyszly mi do glowy, szukalem w helpie na mysql i nic nie znalazle, ten blad jest smieszny po prostu.

Pozdrawiam
Michal
d3ut3r
powinno być:

  1. $sql = "SHOW TABLES FROM `$showDB` LIKE 'cms_%'";
pomoc
WOW!

Dziekuje Ci bardzo.
Czy mozesz mi wytlumaczyc skad tak, dlaczego ?
Powiem szczerze, ze jeszcze nigdy nie uzywalem tego apostrofa w PHP, chyba ze w plikach .sql jak robie export z bazy.
Byc moze wlasnie dlatego pisze na przedszkole.

Jeszcze raz dzieki.
d3ut3r
znak - to operator matematyczny w mysql np:

  1. SELECT name FROM users WHERE id=300-298


zwróci pole name użytkownika o id 2. Dlatego należy unikać takich nazw żeby nie robić niepotrzebnie bałaganu.
pomoc
"Acute accent" - tak sie nazywa ten apostrof, a po Polsku akutowy akcent - smieszna nazwa :-)

Tak wlasnie, ale nadszedl dzien sadu ostatecznego dla mojego zapytania, nigdy nie uzywam takich nazw dla baz danych, ale tym razem nie mialem wyjscia i hosting, na ktorym pracuje aktualnie, domyslnie zalozyl taka baze, bez mozliwosci zmiany jej nazwy (z myslinkiem).

Ok, dziekuje za wytlumaczenie, dowiedzialem sie czegos nowego. Dzieki wielkie!
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.