Page 1 sur 1
Pb avec fichier dans SELECT * INTO OUTFILE
Posté : 15 juil. 2008, 11:19
par TiFred
Salut,
Je cherche à faire une sauvegarde avec SELECT * INTO OUTFILE
Mais PHP ne réagit pas pareil que MySQL au niveau fichier
Comment résoudre facilement le pb ?
Merci
Re: Pb avec fichier dans SELECT * INTO OUTFILE
Posté : 15 juil. 2008, 12:48
par Sékiltoyai
Mais PHP ne réagit pas pareil que MySQL au niveau fichier
Que veut ce dire exactement ?
Posté : 15 juil. 2008, 13:58
par TiFred
MySQL (au moins pour cette commande) considère que le fichier est au niveau de la base de données
PHP considère que le fichier est au même endroit que le script PHP
Je voudrais pouvoir mettre le fichier à un endroit précis. Comment faire pour nommer facilement le fichier (au si bien en local que sur le site) ?
Posté : 15 juil. 2008, 16:18
par Sékiltoyai
Indique un chemin absolu...
Posté : 16 juil. 2008, 17:33
par TiFred
En local il faut mettre C: ou http// ?
Merci
Posté : 16 juil. 2008, 18:53
par Sékiltoyai
Un chemin absolu, ce n'est pas une URL. Si tu mets http ce n'est plus un chemin, et je suis curieux de savoir comment tu veux que MySQL écrive dans un fichier en http… D'autant plus qu'il ne connaît pas le protocole…
Posté : 17 juil. 2008, 18:24
par TiFred
Un chemin absolu, ce n'est pas une URL. Si tu mets http ce n'est plus un chemin, et je suis curieux de savoir comment tu veux que MySQL écrive dans un fichier en http… D'autant plus qu'il ne connaît pas le protocole…
Pour MySQL mais PHP ?
Posté : 17 juil. 2008, 19:11
par Sékiltoyai
C'est à dire, que dois tu en faire du fichier ?
Posté : 17 juil. 2008, 20:24
par TiFred
Le supprimer s'il existe déjà !
Posté : 17 juil. 2008, 20:31
par sadeq
Posté : 06 août 2008, 11:02
par TiFred
Bonjour,
Je suis tjs en train de tester ça !
<?php
require_once("newfonctions.php") ;
$db = Ouvrebase() ; //ouverture de la base
//$fichier = "save".$_POST['table'].".txt" ; //avec ce type de fichier ça marche mais il faut trouver à l'effacer et il est dans le dossier de la base
$fichier = "C://Programmes/EasyPHP2/www/ebasket/admin/save".$_POST['table'].".txt" ;
$req = Envoierequette($db, "SELECT * INTO OUTFILE '".$fichier."' FROM ".$_POST['table']) ;
$message = 'Sauvegarde de la table '.$_POST['table'].' terminée.' ;
Fermebase($db) ;
echo "<div>$message<br />" ;
?>
Si je met un nom de fichier sans chemin, ça marche (et il me met le fichier dans le répertoire correspondant à la base)
mais si je met
$fichier = "C://Programmes/EasyPHP2/www/ebasket/admin/save".$_POST['table'].".txt" ; là il plante, le message est :
Erreur SQL !
SELECT * INTO OUTFILE 'C://Programmes/EasyPHP2/www/ebasket/admin/savejeu1_calendrier.txt' FROM jeu1_calendrier
Can't create/write to file 'C:\\Programmes\EasyPHP2\www\ebasket\admin\savejeu1_calendrier.txt' (Errcode: 2)
J'ai bien vérifié à supprimer les fichiers existants !!!
Posté : 22 août 2008, 13:19
par TiFred
Salut,
Ce sujet est tjs d'actualité
Qq'un peut m'aider SVP ?
Merci
Posté : 22 août 2008, 17:48
par @rthur
Bonjour,
Essaye de doubler tes antislashes (car un antislashe tout seul = caractère d'échappement)
Code : Tout sélectionner
C:\\Programmes\\EasyPHP2\\www\\ebasket\\admin\\savejeu1_calendrier.txt
Posté : 22 août 2008, 20:31
par Sékiltoyai
@rthur, le problème ne se pose pas, il n'utilise pas les antislashes…
Posté : 22 août 2008, 21:58
par sadeq
Souvent, le problème concerne deux choses :
- Le dossier C:\\Programmes\\EasyPHP2\\www\\ebasket\\admin n'existe pas
ou
- Il n'y a pas de droit d'écriture sur le dossier C:\\Programmes\\EasyPHP2\\www\\ebasket\\admin