ďťż

[MySQL5] Czemu LIKE nie dziła?

       

Podstrony


telcocafe

Przykładowe zapytanie: SELECT date FROM blog_entries WHERE date LIKE "2007%"
Czemu nie działa w MySQL5 ? Na Krasnalu wszystko OK, a na yoyo.pl null.
Chcę, by znalazło wszystkie wpisy zaczynające się od 2007, ale nie mam nic! Czemu?



Spróbuj dać nazwy w `:SELECT `date` FROM `blog_entries` WHERE `date` LIKE "2007%";
Poza tym, może wejdź do bazy spod PMA i sprawdź, czy aby na pewno tak nazywają się nazwy tabeli i komórek, i czy aby na pewno wpisy zaczynają się na "2007", bo może jakiś znaczek siedzi na początku... ;)

Pozdrawiam.

edit: a może być to spowodowane samą bazą, click :kwasny:
Użytkownik DJ_ProG edytował ten post 26 luty 2007, 13:24

Spróbuj dać nazwy w `:
To nie ma różnicy.

podaj komunikat błędu MySQL - bez tego to gdybanie. Jeżeli skrypt nie wywala błędu (tak zrobiony) to wykonaj zapytanie w phpMyAdminie :)




Poza tym, może wejdź do bazy spod PMA i sprawdź, czy aby na pewno tak nazywają się nazwy tabeli i komórek, i czy aby na pewno wpisy zaczynają się na "2007", bo może jakiś znaczek siedzi na początku... ;)
Niestety wiem co robię, i napewno zaczyna się od 2007 ;) MySQL 4 radzi sobie z tym OK, ale 5 już niee <_<


podaj komunikat błędu MySQL - bez tego to gdybanie. Jeżeli skrypt nie wywala błędu (tak zrobiony) to wykonaj zapytanie w phpMyAdminie :)
Nie ma żadnego komunikatu błędu... Click - Kalendarz powinien zawierać linki tworzone przez zapytanie, które podałem...

//edit

Czy jest jakaś alternatywa dla LIKE?
Użytkownik andrzej_aa edytował ten post 28 luty 2007, 08:47

Nie ma żadnego komunikatu błędu a co mowi mysql_error() ?


Czy jest jakaś alternatywa dla LIKE?
jest ;]
wyciagniecie wszystkich zapytan, i potem warunek w petli ze jak znajdzie 2007 to ma wyswietlic :)

Kiedyś znalazłem bardzo ciekawy artykuł...
http://kskowron.enzo...a-w-mysqlu.html

to co podałeś to wyszukiwanie pełnotekstowe a tutaj potrzebne jest zwykłe LIKE. Pełnotekstowe zwraca podobieństwa i mógłby uznać np. 2006 za podobny z jakimś tam prawdopodobieństwem i zwrócić.


a co mowi mysql_error() ? On chyba nie mówi, ale też niczego nie wyświetla...
jest ;]
wyciagniecie wszystkich zapytan, i potem warunek w petli ze jak znajdzie 2007 to ma wyswietlic :)
Też nad tym myślałem, ale co będzie, jeśli takich wpisów będzie więcej? Np. 10 tys.? <_<
to co podałeś to wyszukiwanie pełnotekstowe a tutaj potrzebne jest zwykłe LIKE. Pełnotekstowe zwraca podobieństwa i mógłby uznać np. 2006 za podobny z jakimś tam prawdopodobieństwem i zwrócić. Możesz to objaśnić? Mój Krasnal z MySQL 4 "śpiewa", yoyo.pl z MySQL 5 "leży"! Jak to obejść?
Użytkownik andrzej_aa edytował ten post 02 marzec 2007, 14:51
wykonaj zapytanie w phpMyAdminie - to na pewno zwróci komunikat błędu ;)


wykonaj zapytanie w phpMyAdminie - to na pewno zwróci komunikat błędu ;)

Dokładnie tak. Obadaj co ci phpMyAdmine powie bo on zawsze wyświetli ci błąd jeśli jakiś jest. To bardzo dobry sposób na debugowanie takich rzeczy :)

Co za! MySQL 5 zwraca wyniki w postaci:
Array
(
[date]=> 2007-02-11 14:05:17
)
Array
(
[date] => 2007-02-12 11:47:25
)
Array
(
[date] => 2007-02-13 09:32:43
)
Natomiast MySQL 4:
Array
(
[date]=> 20070211140517
)
Array
(
[date] => 20070212114725
)
Array
(
[date] => 20070213093243
)
Czego tak? Czy da się w MySQL 5 zrobić wyświetlanie wyników tak jak w MySQL 4?

a jakiego typu jest to pole ? sprawdź w dokumentacji MySQL dla 5 czy i co uległo zmianie.

(imo) Jasne :P
Wystarczy, że przy pobieraniu wyników użyjesz MySQL'owej funkcji format_date :)

AFAIR SELECT date_format(date,'%Y%m%d%H%i%s') FROM blog_entries WHERE date LIKE "2007%"

Działa, ale w ten sposób:
SELECT date_format(date, '%Y%m%d') FROM blog_entries WHERE date_format(date, '%Y%m%d') LIKE "'.$year.$month.'%" ;)
Niestety tablica, którą zwraca zawiera nieładne klucze date_format(date, '%Y%m%d'), ale może być i to...
Czy ta funkcja działa również w MySQL4?
Użytkownik andrzej_aa edytował ten post 07 marzec 2007, 11:12
AFAIK tak :)
Najlepiej sam sprawdź.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.