loulou Posté 23 Novembre 2004 Posté 23 Novembre 2004 Bonjour, Je cherche à stocker dans une variable l'instruction ci-dessous. Quand je l'execute directement dans mySql, elle fonctionne très bien, mais quand je la réécrit pour la stocker dans une variables, je dois faire des ereures de guillemets et d'antislashs. Quelqu'un peut-il m'aider ? Merci LOAD DATA INFILE "C:\\download\\catalog\\Accessories.txt" INTO TABLE cds_Accessories LINES TERMINATED BY '\r\n';
Anonymus Posté 23 Novembre 2004 Posté 23 Novembre 2004 Et comme ceci ? $query = "LOAD DATA INFILE \"C:\\download\\catalog\\Accessories.txt\" INTO TABLE cds_Accessories LINES TERMINATED BY '\r\n';"; Anonymus.
loulou Posté 24 Novembre 2004 Auteur Posté 24 Novembre 2004 Bonjour Anonymous, Je viens de tester ta requête et cela ne fonctionne pas, alors peut être que cela vient de ma démarche : $sql = "LOAD DATA INFILE \"C:\\download\\catalog\\Atr.txt\" INTO TABLE cds_Atr LINES TERMINATED BY '\r\n';";echo $sql;$result=mysql_query($sql,$connex);mysql_close($connex); Tu remarqueras que je fais un echo de $sql pour voir la requête voici ce que cela m'affiche : LOAD DATA INFILE "C:\download\catalog\Atr.txt" INTO TABLE cds_Atr LINES TERMINATED BY ' '; J'ai alors essayé cette requête : $sql = "LOAD DATA INFILE \"C:\\download\\catalog\\Atr.txt\" INTO TABLE cds_Atr LINES TERMINATED BY '\\r\\n';"; et voici ce que ce la m'affiche : LOAD DATA INFILE "C:\download\catalog\Atr.txt" INTO TABLE cds_Atr LINES TERMINATED BY '\r\n'; Mais cela ne marche pas non plus, suis je illogique ? ou ma démarche te parait-elle logique ? Merci
Anonymus Posté 24 Novembre 2004 Posté 24 Novembre 2004 Tu remarqueras que je fais un echo de $sql pour voir la requête Tu as regardé la sortie d'écran ou le code source ? C'est le code source du navigateur qu'il faut regarder. Sinon, il te faut faire 'addslashes sur la requète, pour 'échapper' les slashes. En effet, il pense que les slashes sont doublés pour être échappés, d'où leur suppression. Pour chaque slash, il faut en ajouter 1. Quitte à en mettre 4 de suite. Anonymus.
loulou Posté 25 Novembre 2004 Auteur Posté 25 Novembre 2004 Bonjour, Je travaille sur un poste windows avec easyphp. Je teste mon application sur ce poste et quand elle sera opérationnelle, elle sera hébergée sur un serveur dédié linux. Les lignes que j'obtiens sont bien celle que j'affiche sur mon navigateur LOAD DATA INFILE "C:\download\catalog\Atr.txt" INTO TABLE cds_Atr LINES TERMINATED BY '\r\n'; Donc cette ligne vous parait correcte ?, d'après vous, mon code est logique ? Je ne sais pas comment je pourrais gérer les droits, et quels droits, peux tu préciser ? Merci pour votre aide Karine
Dan Posté 25 Novembre 2004 Posté 25 Novembre 2004 Loulou, Si ta commande ne s'exécute pas, il est aussi possible que le "Load Data Infile" ne soit pas autorisé. Je ne sais pas pour easyPhp, mais c'est en général une fonction qui est bridée pour des raisons de sécurité. Dan
loulou Posté 26 Novembre 2004 Auteur Posté 26 Novembre 2004 Bonjour Dan, Qu'est ce que tu entends par "bridée" ?, car quand je fais directement un load data infile via mon interface php my admin, cela fonctionne. Est ce qu'il te semble possible que l'on "bride" cette commande quand elle n'est pas executée via php my admin
Dan Posté 27 Novembre 2004 Posté 27 Novembre 2004 Salut Loulou, Regardes si la permission (le privilège) 'read_file' est accordée. Il est possible qu'il ne le soit pas par défaut pour tous les nouveaux utilisateurs, et c'est lui qui gère le "LOAD DATA INFILE" Dan
loulou Posté 29 Novembre 2004 Auteur Posté 29 Novembre 2004 Bonsoir Dan, Je viens de vérifier mes privilèges , comme tu me l'as conseillé, mais tout semble correct de ce côté là. Je vais devoir chercher plus Merci quand-même. Karine
Dan Posté 29 Novembre 2004 Posté 29 Novembre 2004 Karine, J'ai quelques doutes quant à la syntaxe de ta ligne. Comme phpmyadmin fonctionne sous le serveur web avec des permissions spécifiques, ton programme n'a peut-être pas accès au fichier ? Qu'obtiens-tu comme message d'erreur ? Cela nous aiderait de le connaître As-tu essayé un chemin relatif pour le fichier ? Dan
loulou Posté 30 Novembre 2004 Auteur Posté 30 Novembre 2004 Bonjour Dan, En fait il n'y a pas de message d'erreur. Rien de vivible ne se passe à l'écran. Tu penses qu'un chemin relatif serait plus approprié ? du genre : $sql = "LOAD DATA INFILE \"C:\\download\\catalog\\Atr.txt\" INTO TABLE cds_Atr LINES TERMINATED BY '\\r\\n';";$sql = "LOAD DATA INFILE \"../../../Atr.txt\" INTO TABLE cds_Atr LINES TERMINATED BY '\\r\\n';";
Tornado Posté 8 Décembre 2004 Posté 8 Décembre 2004 Bonjour loulou, J'ai le même problème que toi, j'aimerai executer une requête stockée dans une variable. La requête fonctionne parfaitement sous phpmyadmin mais quand j'execute le code php.... rien (même pas de message d'erreur d'ailleurs) <b>Je voulais juste savoir si tu avais réussi à résoudre ton problème ? </b> (ce qui m'aiderai peut-être à résoudre le mien ) NB : Voici le code : $query='LOAD DATA INFILE "E://JDD//saisieBD4.csv" INTO TABLE produit FIELDS TERMINATED BY ","'; mysql_query($query) ; Merci
loulou Posté 8 Décembre 2004 Auteur Posté 8 Décembre 2004 Bonjour Tornado, En fait je n'ai toujours pas résolu ce problème. Je continue à chercher et si je trouve quelque chose, je le publierai.
Anonymus Posté 9 Décembre 2004 Posté 9 Décembre 2004 Il est fait mention, dans la doc, du paramètre : LOCAL. Ca donnerait : LOAD DATA LOCAL.... Sinon, tu devrais essayer de remplacer les guillemets double par des guillemets simples, et inversement, voire par les ` (sous la touche 7) histoire de voire si ce ne serait pas un pb de guillemets. Tu pourrais aussi afficher le résultat du mysql_query; $r = mysql_query($query); echo $r; histoire de voir si la requète 'passe'. la requète peut très bien passer, mais ne rien trouver.
Tornado Posté 13 Décembre 2004 Posté 13 Décembre 2004 Bonjour Anonymus et loulou, Merci pour votre réponse l'un et l'autre... J'ai essayé de remplacer les guillemets par d'autres caractères spéciaux... sans succès. Je me doute que ça doit être une erreur de syntaxe qui me sautera bien aux yeux un jour ou l'autre. Je vais maintenant passer à autre pour avancer qd même et je laisse ce petit problème en suspend Merci Dès que j'ai trouvé quelquechose, je poste un message c promis
Anonymus Posté 13 Décembre 2004 Posté 13 Décembre 2004 Tu as essayé le code : $r = mysql_query($query);echo "<br>requete : ".$r; ?
Tornado Posté 13 Décembre 2004 Posté 13 Décembre 2004 Re bonjour, oui, pardon, j'ai bien testé ce code mais j'ai oublié d'en parler. La variable $r est vide ce qui correspond à une erreur au niveau de la requête, c'est bien ça ? Merci
Tornado Posté 13 Décembre 2004 Posté 13 Décembre 2004 re re bonjour Mon problème est résolu, c'était un débile problème de slash dans le chemin... J'ai eu la puce à l'oreille en visualisant le message d'erreur en langage (à peu près) compréhensible de mysql grâce à mysql_error. Merci à Anonymus qui m'a permis de m'accrocher en montrant de l'intérêt à résoudre mon "petit" problème Pour voir l'erreur : echo 'resultat requête : '.$r.mysql_error(); où $r=mysql_query(requête)
loulou Posté 30 Décembre 2004 Auteur Posté 30 Décembre 2004 Bonjour à tous, Désolée pour le temps de réponse, mais j'avais completement changé de sujet pour avance. J'ai revu ce matin ce post et j'ai don testé à nouveau ma requête, en controlant mes erreurs, ainsi que l'a fait Tornado, et j'ai également vu que j'avais un problème de "\". J'ai corrigé ce problème et voici pour ceux que cela intéresse le code : Ma requête d'origne, qui fonctionne avec phpMyAdmin : LOAD DATA INFILE "C:\\download\\catalog\\Atr.txt" INTO TABLE cds_Atr LINES TERMINATED BY '\r\n'; Ma requête modifiée pour la stocker dans une variable : $sql = "LOAD DATA INFILE \"C:\\\download\\\catalog\\\Atr.txt\" INTO TABLE cds_Atr LINES TERMINATED BY '\r\n';"; Pour contrôler à l'écran si la requête contenue dans ma variable était OK, j'ai procédé comme Tornado, c'est à dire ainsi : $sql = "LOAD DATA INFILE \"C:\\\download\\\catalog\\\Atr.txt\" INTO TABLE cds_Atr LINES TERMINATED BY '\r\n';";$result=mysql_query($sql,$connex);echo 'resultat requête : '.$result.mysql_error(); Le résultat sur mon navigateur était :resultat requête : 1 j'ai ainsi su que la requête était bien executée. Merci beaucoup à Anonymus, Dan et Tornado pour votre aide Karine
Anonymus Posté 30 Décembre 2004 Posté 30 Décembre 2004 Quand on peut rendre service, c'est toujours avec joie
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant