Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 16/11/2009, 09h33   #1
Futur Membre du Club
 
Homme
Analyste d'exploitation
Inscription : novembre 2008
Messages : 130
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Analyste d'exploitation
Secteur : Industrie

Informations forums :
Inscription : novembre 2008
Messages : 130
Points : 16
Points : 16
Par défaut insertion caractères spéciaux dans base ACCESS

Bonjour à tous,
voici mon soucis : lorsque je veux rentrer dans ma base des champs textes ou il y a des quotes ou des sauts de ligne, cela me fait planter l'insertion car en faite ca coupe mon champs sql de requête. Comment résoudre cela ? J'ai bien essayer avec la fonction addslashes mais sans aucun résultat .. Voici la partie de mon code avec le champ sql :
Code :
1
2
3
4
$sql = "INSERT INTO T_TACHE (date_tache,libelle_tache,dossier_tache,client_tache,detail_tache,valider_tache,yannick,aurelien,robert,daniel,jonas,marielle)
				VALUES (#".$dateUS."#, '".$tache."', '".$dossier."', '".$client."', '".$details."', ".$valider.", ".$yannick.", ".$aurelien.", ".$robert.", ".$daniel.",
				".$jonas.", ".$marielle." ) " ;
				odbc_exec($cnx,$sql) or die('Erreur dans : '.$sql.' ');
Titiii25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2009, 11h03   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Pour les guillemets et apostrophes, c'est bien addslashes() qu'il faut utiliser.

Peux-tu nous montrer ce que tu as fait ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2009, 17h45   #3
Futur Membre du Club
 
Homme
Analyste d'exploitation
Inscription : novembre 2008
Messages : 130
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Analyste d'exploitation
Secteur : Industrie

Informations forums :
Inscription : novembre 2008
Messages : 130
Points : 16
Points : 16
Par défaut toujours pareil !

J'ai bien mis la fonction comme ceci :
Code :
1
2
3
// INSERTION DE LA TACHE !
			$sql="	INSERT INTO T_TACHE (id_tache,libelle_tache,dossier_tache,client_tache,detail_tache,valider_tache) 
					VALUES(".$id_tache.",'".addslashes($tache)."','".addslashes($dossier)."','".addslashes($client)."','".addslashes($details)."',".$valider.")
Mais toujours le même problème :
Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''*** \' ***,0)'., SQL state 37000 in SQLExecDirect in ******\valider_tache.php on line 66
erreur sql dans : INSERT INTO T_TACHE (id_tache,libelle_tache,dossier_tache,client_tache,detail_tache,valider_tache) VALUES(316,'brtbrtbrtbrt','****','******','** \' ***',0).
Les étoiles représentent une chaine de caractère quelconques sans caractère spécial.
Titiii25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2009, 17h56   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
tu as remarqué que dans l'erreur il manque une apostrophe pour cloturer ton avant dernière chaine ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2009, 18h00   #5
Futur Membre du Club
 
Homme
Analyste d'exploitation
Inscription : novembre 2008
Messages : 130
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Analyste d'exploitation
Secteur : Industrie

Informations forums :
Inscription : novembre 2008
Messages : 130
Points : 16
Points : 16
je viens de remarquer mais cela ne change rien car en faite c'est moi qui est mal recopier, il y a bien un guillemet a la fin de la chaine de caractère ! Donc a tu une idée pour résoudre ce problème ?
Titiii25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2009, 18h12   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Trouve la partie de la requete qui pose probleme.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2009, 09h28   #7
Futur Membre du Club
 
Homme
Analyste d'exploitation
Inscription : novembre 2008
Messages : 130
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Analyste d'exploitation
Secteur : Industrie

Informations forums :
Inscription : novembre 2008
Messages : 130
Points : 16
Points : 16
Citation:
Envoyé par sabotage Voir le message
Trouve la partie de la requête qui pose problème.
Je sais que la partie qui déconne est celle qui a des quottes dans la chaine de caractères... J'ai développé dans un autre projet en php avec mysql un site web qui fonctionne très bien, j'utilise cette même fonction pour les caractères spéciaux et il n'y a aucun soucis avec la BDD, est-ce que cela viendrait de ACCESS ? Comment résoudre cela ? Merci !
Titiii25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2009, 09h49   #8
Futur Membre du Club
 
Homme
Analyste d'exploitation
Inscription : novembre 2008
Messages : 130
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Analyste d'exploitation
Secteur : Industrie

Informations forums :
Inscription : novembre 2008
Messages : 130
Points : 16
Points : 16
Par défaut solution

J'ai trouvé une solution qui a l'air de fonctionné :
Code :
1
2
3
$sql="	INSERT INTO T_TACHE (id_tache,libelle_tache,dossier_tache,client_tache,detail_tache,valider_tache) 
					VALUES(".$id_tache.",'".htmlspecialchars($tache,ENT_QUOTES)."','".htmlspecialchars($dossier,ENT_QUOTES)."',
					'".htmlspecialchars($client,ENT_QUOTES)."','".htmlspecialchars($details,ENT_QUOTES)."',".$valider.")
Titiii25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2009, 10h16   #9
Membre chevronné
 
Inscription : mars 2005
Messages : 580
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 580
Points : 648
Points : 648
Petite interrogation.
Est ce que ACCESS ne nécessite pas d'échapper les apostrophes en les doublant (style magic_quotes_sybase) ?
Petibidon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 21h39.


 
 
 
 
Partenaires

Hébergement Web