probleme de ' ou de " dans une chaine en php

cr500
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 315
Inscription: 13 Oct 2004

probleme de ' ou de " dans une chaine en php

Message le Sam Jan 21, 2006 14:52

bjr à tous

voulà bientot longtemsp que je n'ai plus touché à un bout de php

j'essais actuellement d'enregistrer des variables dans une table


Code: Tout sélectionner
$sql = " INSERT INTO `user` (`id`,`iduser`,`activation`,`ddate`,`mdate,`ydate`, `ip_adresse`,`email`,`password`,`nom`,`prenom`, `adresse`,`codepostal`,`ville`,`pays`,`jour`,`mois`, `annee`,`titresite`,`url`)
VALUES ('',$iduser,0,$ddate,$mdate,$ydate,$ip_adresse,$email,$password, $nom,$prenom,$adresse,$codepostal,$ville,$pays,$jour,$mois, $annee,$titresite,$url)";
$result = mysql_query($sql);



mais cela ne mrche pas
je pense à un pb de ' ou de "

pouvez vous m'aider svp
merci :(

shrom
WRInaute impliqué
WRInaute impliqué
 
Messages: 865
Inscription: 5 Juil 2004

Re: probleme de ' ou de " dasn une chaine en php

Message le Sam Jan 21, 2006 15:18

Code: Tout sélectionner
$sql = "
    INSERT INTO user
        (
            id ,
            iduser,
            activation,
            ddate,
            mdate,
            ydate,
            ip_adresse,
            email,
            password,
            nom,
            prenom,
            adresse,
            codepostal,
            ville,
            pays,
            jour,
            mois,
            annee,
            titresite,
            url
        )
        VALUES
        (
            '',
            mysql_real_escape_string( $iduser ),
            0,
            mysql_real_escape_string( $ddate ),
            mysql_real_escape_string( $mdate ),
            mysql_real_escape_string( $ydate ),
            mysql_real_escape_string( $ip_adresse ),
            mysql_real_escape_string( $email ),
            mysql_real_escape_string( $password ),
            mysql_real_escape_string( $nom ),
            mysql_real_escape_string( $prenom ),
            mysql_real_escape_string( $adresse ),
            mysql_real_escape_string( $codepostal ),
            mysql_real_escape_string( $ville ),
            mysql_real_escape_string( $pays ), 
            mysql_real_escape_string( $jour ), 
            mysql_real_escape_string( $mois ),
            mysql_real_escape_string( $annee ),
            mysql_real_escape_string( $titresite ),
            mysql_real_escape_string( $url )
        )
    ";

if( ! $result = mysql_query($sql) ) {
    trigger_error( E_USER_ERROR, mysql_error() );
}


PS1: j'ai mis mysql_real_escape_string sur tous les champs car je ne sais pas lesquels sont des champs texte et lesquels sont numériques.

PS2: le champs id est autoincrémenté je pense, on peut donc le virer.

PS3: id et iduser me semblent redondants

PS4: si le champs activation doit toujours être à 0 lors d'une insertion, le déclarer comme NOT NULL avec une valeur par défaut de 0, tu peux alors le virer de la requête

PS5: il y a un type DATE dans mysql


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Message le Sam Jan 21, 2006 15:25

Déjà, si t'as autant de champs a inscrire, je ne te conseille pas cette "syntaxe" pour les insert.
Je trouve que c'est plus simple à modifier dans le futur:
Code: Tout sélectionner
INSERT INTO table SET champ1=valeur1,champ2=valeur2

Là tu ne dois pas te soucier de respecter l'ordre

Il te manque un "backtick" après mdate.

shrom
WRInaute impliqué
WRInaute impliqué
 
Messages: 865
Inscription: 5 Juil 2004

Message le Sam Jan 21, 2006 16:59

spoutnik a écrit:Je trouve que c'est plus simple à modifier dans le futur:
Code: Tout sélectionner
INSERT INTO table SET champ1=valeur1,champ2=valeur2



Et complètement pas portable, c'est une syntaxe 100% mysql. En plus de devoir remplacer les mysql_xxx ( puisqu'aucune couche d'abstraction n'est utilisée ), il faudra aussi revoir tous les INSERT en cas de changement de SGBD ou si MySQL décide d'abandonner cette syntaxe.

cr500
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 315
Inscription: 13 Oct 2004

Message le Lun Jan 23, 2006 6:49

merci je vasi tester ca dans les heures suivantes ;)


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités