2009-12-29 3 views
0

J'ai ce tableau:MySQL ucfirst ne fonctionne pas

CREATE TABLE IF NOT EXISTS `events` (
    `evt_id` int(11) NOT NULL AUTO_INCREMENT, 
    `evt_name` varchar(50) CHARACTER SET utf8 NOT NULL DEFAULT 'ucfirst', 
    `evt_description` varchar(100) DEFAULT NULL, 
    `evt_startdate` date NOT NULL, 
    `evt_enddate` date DEFAULT NULL, 
    `evt_starttime` time DEFAULT NULL, 
    `evt_endtime` time DEFAULT NULL, 
    `evt_amtpersons` int(11) DEFAULT NULL, 
    `sts_id` int(11) NOT NULL, 
    `adr_id` int(11) DEFAULT NULL, 
    `evt_amtPersonsSubs` tinyint(4) NOT NULL DEFAULT '0', 
    `evt_photo` varchar(50) DEFAULT NULL, 
    `sys-mut-dt` timestamp NULL DEFAULT CURRENT_TIMESTAMP, 
    `sys-mut-user` varchar(20) DEFAULT NULL, 
    `sys-mut-id` int(11) NOT NULL DEFAULT '0', 
    PRIMARY KEY (`evt_id`), 
    KEY `sts_id` (`sts_id`), 
    KEY `adr_id` (`adr_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ; 

Mais quand j'ajouter des données dans evt_name mon premier caractère est pas capitalisé. Des idées?

Informations complémentaires: MySQL version client: 5.1.37

Je veux faire dans la base de données afin que je ne dois pas faire ucfirst avec php toujours.

+0

J'utiliserais toujours des fonctions de 'formatage' en PHP. Cela rendrait la vie plus facile si vous deviez réutiliser les données dans une application différente à l'avenir. – BenTheDesigner

Répondre

3

... quoi?

Si je lis bien, la valeur par défaut evt_name sera affectée à la chaîne ucfirst. Essayez d'insérer une ligne vide et voir si je lis bien.

Si vous êtes vraiment contre en utilisant ucfirst en PHP, vous devrez probablement toujours appeler ucfirst à chaque fois dans la requête. Ou vous pouvez seulement utiliser ucfirst sur l'affichage, et pas dans la base de données.

+0

ok je pensais que je pourrais juste l'aragne dans la table elle-même sans le faire dans chaque requête. – sanders

2

ucfirst est une fonction ... vous l'avez définie comme valeur par défaut pour la cellule. Utilisez-le comme ceci:

INSERT INTO events SET evt_name = UCFIRST($value) 
+2

'UCFIRST' n'est pas une fonction mysql standard. – Lode

+0

Si vous voulez faire cela de manière standard, utilisez: '' 'INSERT INTO' events' SET 'evt_name' = CONCAT (UPPER (GAUCHE ('$ value', 1)), LOWER (SUBSTRING ('$ valeur ', 2))) '' ' – smhg