[access] [php] probléme INSERT/UPDATE
                                    
                        arnaud                    
                                    -
                                     
Ike -
        Ike -
        Bonjour tout le monde et sutout toi, là, qui posséde la solution
Probléme simple (comme toujours) :
EasyPHP sous windows 2000, pour insérer/modifier des données dans access (j'ai pas eu le choix).
Donc tout se passe bien sauf quand on insére des caractéres spéciaux pourtant j'utilise addslashes() et j'ai également essayé mysql_real_escape_string() mais le résultat est le même j'ai ce message d'erreur :'(
                
            
                
    
    
    
        Probléme simple (comme toujours) :
EasyPHP sous windows 2000, pour insérer/modifier des données dans access (j'ai pas eu le choix).
Donc tout se passe bien sauf quand on insére des caractéres spéciaux pourtant j'utilise addslashes() et j'ai également essayé mysql_real_escape_string() mais le résultat est le même j'ai ce message d'erreur :'(
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''Remarque c\'est pas possible ')'., SQL state 37000 in SQLExecDirect in c:\ma\www\create_job.php on line 220
Impossible d'éxecuter 'INSERT INTO dt(nom_client, num_dt, operateur, jour_traitement, jour_fin, nom_aff, nom_machine, index_ma_debut, index_ma_fin, tps_prevu, ecart_tps, tps_passe, quantite_info, ecart_index_ma, intervention, quantite_totale_traite, ecart_quantite, remarque) VALUES ('nom client', 'num_dt', 'divers', #2007-03-12 16:08:27#, #2007-03-12 16:57:13#, '2273', 'poste impression', 130, 1000, 15, 34, 49, 1000, 870, 'intervention',0 ,0 , 'Remarque c\'est pas possible ')'
            
            
        A voir également:         
- [access] [php] probléme INSERT/UPDATE
- Touche insert - Guide
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Easy php - Télécharger - Divers Web & Internet
 
    
    
    
    
oui mais le probléme s'inverse, je ne peux plus mettre de double quotes...
De plus il semblerai que access zappe carremment les paramétres entre doubles quote à savoir les champs "intervention" et "remarque"
Y a pas un caractéres d'échappement spécifique à access ? Vu que l'antislash n'a pas l'air de faire son job...
ma requéte :
$insert = "INSERT INTO dt("; $insert .= "nom_client, "; $insert .= "num_dt, operateur, jour_traitement, jour_fin, nom_aff, nom_machine, index_ma_debut, index_ma_fin, tps_prevu, ecart_tps, tps_passe, quantite_info, ecart_index_ma, intervention, quantite_totale_traite, ecart_quantite, remarque"; $insert .= ") VALUES ('$nom_client', '$num_dt', "; $insert .= "'$operateur', "; $insert .= "#$jour_traitement#, #$jour_fin#, '$machine_affranchir', '$faconnage', $index_ma_debut, $index_ma_fin, $tps_prevu, $ecart_tps, $tps_passe, $quantite_info, $ecart_index_ma, \"".addslashes($intervention)."\",0 ,0 , \"".addslashes($remarque)."\")";Le résultat :
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramètres. 2 attendu., SQL state 07001 in SQLExecDirect in c:\ma\www\create_job.php on line 220 Impossible d'éxecuter 'INSERT INTO dt(nom_client, num_dt, operateur, jour_traitement, jour_fin, nom_aff, nom_machine, index_ma_debut, index_ma_fin, tps_prevu, ecart_tps, tps_passe, quantite_info, ecart_index_ma, intervention, quantite_totale_traite, ecart_quantite, remarque) VALUES ('nom client', 'num_dt', 'divers', #2007-03-12 16:08:27#, #2007-03-13 13:46:27#, '2273', 'poste impression', 130, 1000, 15, 1283, 1298, 1000, 870, "intervention",0 ,0 , "Remarque c\'est pas possible")'Je veux dire apparament le probléme c'est d'échapper les caractéres spéciaux sous access tel que : " ' ? etc...
D'habitude, quand j'ai le choix et que j'utilise MySQL, addslashes() permet d'éviter ce genre de probléme mais là ce put*** d'access lui il veux pas...
ma fonction en PHP est en open source ;) à améliorer si besoin est...
<?php function escape_quote($string) { $return_str = ""; $longueur_str = strlen($string); for($i=0; $i<=$longueur_str; $i++) { //on parcours chaque caractére de la chaine de caractéres et on ajoute un quote devant le caractéres courant. $char = substr($string, $i, 1); if($char == "'") { $char .= "'"; } $return_str .= $char; } return $return_str; } ?>Probléme résolu jusqu'à preuve du contraire...
Blux, merci BEAUCOUP de m'avoir mis sur la voie ;)