Re: [LA-discussions] PB php mysql |
[ Thread Index | Date Index | More linuxarverne.org/discussions Archives ]
Salut On Sat, Jan 02, 2010 at 12:21:16AM +0100, KewlCat wrote: > jean-luc boutin wrote: > > $sql = "LOAD DATA INFILE \"afifede.txt\" REPLACE INTO TABLE afifede > > FIELDS TERMINATED BY ';' IGNORE 1 LINES"; C'est du SQL2010 ça au moins... Pour du code pérenne, à éviter comme la peste; si c'est pas fait pour être réutilisé (c'est que de la glue) quel intérêt de le faire dans un script en PHP ? Exception autorisée, c'est quelque chose qui est exécuté souvent dans un site web (genre à chaque page affichée) et il faut que ça ne rame pas trop et on est obligé de garder MySQL. > Par eilleurs il me semble que le séparateur de chaînes en SQL est > l'apostrophe ("single-quote") donc je verrais plutôt : Oui, mais su la syntaxe de MySQL était le SQL, ça se saurait ... > Problème : il se peut que la fonction mysql_query fasse également de > l'échappement avec le caractère \ ce qui obligerait à écrire plutôt > ceci : > $sql = "LOAD DATA INFILE 'afifede.txt' REPLACE INTO TABLE afifede FIELDS > TERMINATED BY '\\\\' IGNORE 1 LINES"; Non, la fonction exécute à peu près les requêtes qu'on lui passe (juste des fois on ne lui passe pas ce qu'on pense à cause des magic quotes (qui pour une raison obscure étaient activées par défaut du temps ou je faisais du PHP) qui se retrouve un peu trop échappées dès qu'on code correctement en faisant appel à *_escape_string() (et mysql_real_escape_string())). Après, tu voulais peut être dire que MySQL lui même interprétait '\' comme spécial: c'est le cas, mais c'est un problème indépendant. Bref, si tu prends la doc-pourrie (qui ne dit nulle par de quel standard LOAD DATA sort): http://dev.mysql.com/doc/refman/5.0/fr/load-data.html LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY '\t'] [[OPTIONALLY] ENCLOSED BY ''] [ESCAPED BY '\\' ] ] [LINES [STARTING BY ''] [TERMINATED BY '\n'] ] [IGNORE number LINES] [(col_name,...)] C'est probablement le "ESCAPED BY '\\'" qui vient t'enquiquiner. Essaye de le changer. ++ Romain -- Romain Tartière <romain@xxxxxxxxxxxx> http://romain.blogreen.org/ pgp: 8DAB A124 0DA4 7024 F82A E748 D8E9 A33F FF56 FF43 (ID: 0xFF56FF43) (plain text =non-HTML= PGP/GPG encrypted/signed e-mail much appreciated)
Attachment:
pgpeqXRFr9UAN.pgp
Description: PGP signature
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |