Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Porównania wpisów
gebp
post
Post #1





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

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


Tak więc wszys... no większość wie że W PHP:
  1. <?php
  2. kot==KOT  // true
  3. kot===KOT // false
  4. ?>


Chciałem zapytać, ponieważ bardzo słabiutko znam MySQL, czy w zapytaniach do bazy da się uzyskać porównanie "dokładne" jeżeli chodzi o ciągi tekstowe, czy lepiej kombinować:
1. z wyrażeniami regularnymi w zapytaniach MySql
2. sprawdzić w PHP pobrane wyniki na okoliczność "dokładnego" (z uwzględnieniem wielkości liter) porównania

A może ja nie potrafię znaleźć odp. ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Grzyw
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Co rozumiesz pod pojęciem porównań dokładnych? Masz zestaw funkcji w MySQL, które załatwią część operacji. Typu ucięcie białych znaków, zmiana wszystkich liter na małe ITP.
Przykład pierwszy z brzegu:
  1. lower('kot')=lower('KOT')
Go to the top of the page
+Quote Post
gebp
post
Post #3





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

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


Przepraszam jeśli się nie dokładnie wyraziłem.
tak więc:
  1. <?php
  2. $imie="ToM";
  3. $sql=" SELECT `ID` FROM `tabela` WHERE `imie` LIKE '$imie' ";
  4. $q=mysql_querry($sql);
  5. $res=mysql_fetch_array($q);  // w odpowiedzi dostane  Array( 0=>"TOM', 1=>"tom", 2=>"TOm" ... ect. )
  6. ?>


Ja potrzebuje w w/w zapytaniem znaleźć ID tak by był spełniony warunek że taki by "ToM" === "ToM" a nie "tom" i "toM" lub "TOm" itd, czyli by szukana dana była dokładnie taka sama ( co do wielkości , ilości ect w tym przypadku liter).
Go to the top of the page
+Quote Post
zulus
post
Post #4





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

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


To po co Ci LIKE?

Nie lepiej:
  1. <?php
  2. `imie`= ''' . mysql_real_escape_string($imie) . '''
  3. ?>


(to funkcja będzie dodatkową ochroną przed SQL Injection (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) )
Go to the top of the page
+Quote Post
gebp
post
Post #5





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

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


No dobra to może tak:
w bazie w tabeli mam:
  1. id imie
  2. 1 TOM
  3. 2 TOm
  4. 3 Tom
  5. 4 tom
  6. 5 toM
  7. 6 tOM
  8. 7 ToM
  9. 8 tOM


Jak zapisać polecenie
  1. SELSECT `id` FROM `tabela` WHERE `imie`='$imie'

tak aby w wyniku otrzymać że pasujący rekord (id) równa się 4 (id=4) oczywiście mając dane $imie==="tom"
Go to the top of the page
+Quote Post
zulus
post
Post #6





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

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


No to właśnie to zrobiłeś (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) zmień tylko na SELECT
Go to the top of the page
+Quote Post
Pilsener
post
Post #7





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Wydaje mi się, jak ustawisz odpowiednią właściwość dla pola tekstowego czy tabeli - z tego co pamiętam, to chodzi o COLLATION czy coś takiego, tu masz pierwsze lepsze tematy na ten temat:
http://forum.php.pl/index.php?showtopic=41469
http://forum.php.pl/index.php?showtopic=96994
Go to the top of the page
+Quote Post
gebp
post
Post #8





Grupa: Zarejestrowani
Postów: 180
Pomógł: 6
Dołączył: 10.04.2006

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


Znalzałem rozwiązanie ( tak jakby ktoś jeszcze szukał). U mnie przy kodowaniu bazy i połączeń ustawionym na "utf8_unicode_ci" działa.
Odnosząc się do przykładu wyżej zapytanie wygląda następująco:
  1. SELECT `id` FROM `tabela` WHERE BINARY `imie` LIKE 'ToM'
  2. // odp id=7
Go to the top of the page
+Quote Post
decha-design
post
Post #9





Grupa: Zarejestrowani
Postów: 415
Pomógł: 46
Dołączył: 26.05.2007
Skąd: Sandomierz

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


ale z samym = powinno dzialać

  1. SELECT `id` FROM `tabela` WHERE `imie`='$imie'
... =o
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czy Ci sprawdzi wielkość liter we wzorcu? Przy _ci nie.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 3.10.2025 - 04:44