"Hrabia wracał do siebie lecz konia wstrzymywał Głową coraz w tył kręcił w ogród się wpatrywał I raz mu się zdawało".
W stworzonym zapytaniu dodającym kolejne wyrazy do bazy danych, niektóre słowa zostają ucięte:
Kod
INSERT INTO
ewolon_search_index(`id`,`idSearch`,`word`,`lang`)
VALUES
('','1','Hrabia',0),('','1','wracał',0),('','1','siebie',0),('','1','lecz',0),
('','1','konia',0),('','1','wstrzymywał',0),('','1','łową',0),('','1','raz',0),
('','1','tył',0),('','1','ręcił',0),('','1','ogród',0),('','1','ię',0),
('','1','patrywał',0),('','1','raz',0),('','1','się',0),('','1','dawało',0)
ewolon_search_index(`id`,`idSearch`,`word`,`lang`)
VALUES
('','1','Hrabia',0),('','1','wracał',0),('','1','siebie',0),('','1','lecz',0),
('','1','konia',0),('','1','wstrzymywał',0),('','1','łową',0),('','1','raz',0),
('','1','tył',0),('','1','ręcił',0),('','1','ogród',0),('','1','ię',0),
('','1','patrywał',0),('','1','raz',0),('','1','się',0),('','1','dawało',0)
Kod
CREATE DEFINER=`root`@`localhost` FUNCTION `_add2Index`(`idArticle` INT, `lang` INT, `text2Index` TEXT)
RETURNS text
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE queryText TEXT;
DECLARE counter INT;
SET CHARSET utf8;
SET NAMES `utf8` COLLATE `utf8_polish_ci`;
SET counter = 0;
SET queryText = "INSERT INTO ewolon_search_index(`id`,`idSearch`,`word`,`lang`) VALUES";
SET @saTail = text2Index;
loop_index: WHILE @saTail!='' DO
SET @sHead = SUBSTRING_INDEX(@saTail, ' ', 1);
SET @saTail = SUBSTRING( @saTail, LENGTH(@sHead)+2);
IF LENGTH(@sHead)>2 THEN
IF counter > 0 THEN
SET queryText = CONCAT(queryText,",('','",idArticle,"','",@sHead,"',",lang,")");
ELSE
SET queryText = CONCAT(queryText,"('','",idArticle,"','",@sHead,"',",lang,")");
END IF;
SET counter = counter + 1;
END IF;
SET queryText = CONCAT(queryText,@saTail);
END WHILE loop_index;
RETURN queryText;
END
RETURNS text
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE queryText TEXT;
DECLARE counter INT;
SET CHARSET utf8;
SET NAMES `utf8` COLLATE `utf8_polish_ci`;
SET counter = 0;
SET queryText = "INSERT INTO ewolon_search_index(`id`,`idSearch`,`word`,`lang`) VALUES";
SET @saTail = text2Index;
loop_index: WHILE @saTail!='' DO
SET @sHead = SUBSTRING_INDEX(@saTail, ' ', 1);
SET @saTail = SUBSTRING( @saTail, LENGTH(@sHead)+2);
IF LENGTH(@sHead)>2 THEN
IF counter > 0 THEN
SET queryText = CONCAT(queryText,",('','",idArticle,"','",@sHead,"',",lang,")");
ELSE
SET queryText = CONCAT(queryText,"('','",idArticle,"','",@sHead,"',",lang,")");
END IF;
SET counter = counter + 1;
END IF;
SET queryText = CONCAT(queryText,@saTail);
END WHILE loop_index;
RETURN queryText;
END
Szukam i szukam i już nie wiem co jest nietak, wydaje mi się, że wynika to z winy polskich niektórych polskich ogonków. W php treść wygląda poprawnie, jest ona wysyłana postem, wyświetla się tak, jak powinna, przy połączeniu z bazą danych mam ustawione:
"SET NAMES UTF8"
Jak wybrnąć z tego problemu??