mysql: 5.0.22-community-nt
php: 5.1.0b3
odrazu po polaczeniu z mysql-em wysylam:
SET NAMES utf8; SET collation_connection = 'utf8_general_ci'; SET NAMES utf8; SET collation_connection = 'utf8_general_ci';
struktura tabeli tabela:
CREATE TABLE `pref_wpisy` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `autor_id` int(11) NOT NULL, `data_dodania` int(11) NOT NULL DEFAULT '0', `data_wygasniecia` int(11) NOT NULL, `wlaczone` tinyint(1) NOT NULL, `tyt` varchar(255) NOT NULL, `tytul` varchar(50) character SET utf8 collate utf8_polish_ci NOT NULL, `wstep` varchar(255) NOT NULL, `tresc` longtext NOT NULL, `mapa_lat` varchar(50) NOT NULL, `mapa_lng` varchar(50) NOT NULL, `mapa_zoom` tinyint(2) NOT NULL, `promocja_pierwsze_miejsce` tinyint(1) NOT NULL DEFAULT '0', `tagi` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;
stringi filtruje za pomoca mysql_real_escape_string
kodowanie domyslne to utf-8
wszystko jest ok.. dopuki nie uzyje strtolower dla stringa z polskimi znakami.. mysql po takim czyms wywala mi komunikat np.
Data too long for column 'wstep' at row 1
dla kolumny wstep.. chociaz jest tam zaledwie 10 znakow, to pokazuje sie msg z bledem dlaczego ?
domyslam sie ze cos mysql nie radzi sobie z pl kodowaniem wiec uzylem funkcji:
<?php public function kodowanie_strtolowers($str){ return $str; } ?>
po funkcji strtolower i jest ok... ale do czasu.. czasem zdarza mi sie, ze nawet jesli nie uzywam strtolower to pojawia sie komunikat ze dane sa za duze do tego pola.. czy cos w miedzy czasie zrobilem zle.. czy musze poprostu przed kazdym wyslaniem danych do mysql przefiltrowac je zapomoca funkcji o ktorej napisalem wczesniej ?