Autor | Zpráva | ||
---|---|---|---|
Levelson Profil * |
#1 · Zasláno: 26. 5. 2009, 11:45:30
Na ověření zda-li tabulka obsahuje určitý text jsem si oblíbil následující kód:
$result=mysql_num_rows(mysql_query("SELECT 1 FROM tabulka WHERE obsah LIKE '%".addlashes($obsah)."%' LIMIT 1")); Potřeboval bych ovšem i variantu, která nebude striktně lpět na velikosti znaků v řetězci... Tzn. když bude např. $obsah="karel gott" aby to vyhodilo ($result > 0) i v případě že bude v tabulce záznam "Karel Gott" Pzn. hledat se bude v záznamech typu VARCHAR... Jde to nějak zakomentovat, upravit? |
||
Majkl578 Profil |
#2 · Zasláno: 26. 5. 2009, 12:00:30
zmenit typ sloupce na *_ci (case-insensitive)
|
||
AM_ Profil |
#3 · Zasláno: 26. 5. 2009, 12:02:17
Musíš nastavit case insensitive porovnávání (collation). Lze to trvale (jako vlastnost sloupce obsah) nebo jednorázově pro dotaz (přidáním COLLATE ...)
Dočasně je to: "SELECT 1 FROM tabulka WHERE obsah LIKE '%".addlashes($obsah)."%' COLLATE cp1250_general_ci LIMIT 1" Porovnávání musí odpovídat kódování, které používáš (tedy začínat na něj, např. cp1250_), a končit _ci (case-insensitive) a musí být dostupné v tvojí verzi SQL. |
||
Časová prodleva: 15 let
|
0