Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & ODBC
PHP & ODBC Forum d'entraide sur ODBC avec PHP. Avant de poster -> FAQ ODBC
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 19/06/2007, 17h45   #1
Nouveau Membre du Club
 
Avatar de kernigansnotdead
 
Inscription : septembre 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 64
Points : 26
Points : 26
Envoyer un message via ICQ à kernigansnotdead
Par défaut [Access] Gérer les apostrophes

Bonjour,

voila, je vous explique le problème depuis le début :

j'utilise PHP 4.2.0 avec MS Access 2003, et lorsque que je tente un INSERT avec une valeur qui contient un apostrophe, j'obtient bien sur le message suivant
Citation:
[Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (operateur absent) dans l'expression ''Dick's Computer Dienst')'.
Donc forcément, j'essaye de trouver un moyen d'enlever l'apostrophe qui est à l'origine de tout cela...

et voici le code qui génère la variable que je tente d'insérer :
Code :
1
2
3
4
 
if(preg_match('/<h1 style="margin-left:20px;margin-top:5px;">(.*)<\/h1>/', $lines[$i], $matches))		
{$db_company_name=trim($matches[1],"\'");
}
et ensuite la requête :
Code :
1
2
3
4
5
6
7
 
#connecting to database
				$database = new TAccessDB;
				$connection_id = $database->connect(DB_ODBC_NAME, DB_ODBC_USERNAME, DB_ODBC_PASSWORD);
				#inserting data database
				$query = "insert into T_COMPANIES_SAMPLE (Company) values('$db_company_name')";
				$inserting_companies = $database->exec($connection_id, $query) or die ('<div style=color:red>can\'t insert '.odbc_errormsg().' <div><br>');
jusque la ça devrait fonctionner, mais ça fonctionne pas...
quelqu'un a une idée?

Merci pour votre aide,
knd
kernigansnotdead est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 17h51   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 450
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 450
Points : 7 559
Points : 7 559
Pour insérer une apostrophe en SQL, il faut la doubler...
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 18h01   #3
Nouveau Membre du Club
 
Avatar de kernigansnotdead
 
Inscription : septembre 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 64
Points : 26
Points : 26
Envoyer un message via ICQ à kernigansnotdead
Bonjour,

et merci pour ta réponse. En fait, je ne vois pas ce que tu veux dire par 'la doubler'. en mettre deux? Ma réponse paraît idiote, mais sincèrement je vois pas

knd
kernigansnotdead est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 18h16   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 450
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 450
Points : 7 559
Points : 7 559
Citation:
Envoyé par kernigansnotdead
En fait, je ne vois pas ce que tu veux dire par 'la doubler'. en mettre deux?
Code :
1
2
INSERT INTO matable(colonne)
VALUES ('c''est ça')
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 08h45   #5
Nouveau Membre du Club
 
Avatar de kernigansnotdead
 
Inscription : septembre 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 64
Points : 26
Points : 26
Envoyer un message via ICQ à kernigansnotdead
Bonjour,

quand je rajoute un apostrophe pour une seule chaine de caractère en dur, ça fonctionne bien, mais je vois pas comment automatiser le processus avec une variable. Je ne vois pas de fonctions qui rajoute systématiquement un apostrophe derrière chaque apostrophe.
J'ai essayé addslashes() et j'obtient la même erreur. Dois-je passer par différentes string functions?

knd
kernigansnotdead est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 09h24   #6
Nouveau Membre du Club
 
Avatar de kernigansnotdead
 
Inscription : septembre 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 64
Points : 26
Points : 26
Envoyer un message via ICQ à kernigansnotdead
en fait, je viens de régler le problème en utilisant ereg_replace()
Code :
$db_company_name=ereg_replace("'","''",$matches[1]);
c'était pas plus compliqué que ça, bon en tout cas merci pour ton aide.

knd
kernigansnotdead est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h21.


 
 
 
 
Partenaires

Hébergement Web