Problème de SELECT * INSERT INTO
Résoluclé de 12 Messages postés 141 Date d'inscription Statut Membre Dernière intervention -
Bonjour
je galère sur une syntaxe que je n'arrive pas à corriger. Je voudrais faire la sauvegarde de mes données annuelles en fichier csv, excel ou autre. J'ai parcouru les sites et tous semblent indiquer la même chose, mais de façon incomplète. Merci de corriger ma requête si possible. Mon dossier reste désespéramment vide mais je n'ai aucun message d'erreur. Je précise que ceci avec ou sans le while, et que si je ne mets pas le into outfile etc.. elle fonctionne
Merci d'avance
$myreq = "select * from adherents where annee = $exer into outfile 'C:\\temp\\CSV.csv'"; $result = mysqli_query($conn, $myreq); while ($row = mysqli_fetch_array($result)) { echo "ID".$row[0]." ". $row[2]." ".$row[3]." ".$row[4]." ".$row[5]." ".$row[6]." ".$row[7]." ".$row[8]." ".$row[9]." ".$row[10]." ".$row[11]." ".$row[12]." ".$row[13]."<br>"; }
- Regarder conn: la grande escroquerie
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Touche insert sur clavier portable hp ✓ - Forum Clavier
- Touche inser sur elite book hp - Forum PC portable
- Reboot and select proper boot device or insert boot media in selected boot device and press a key - Forum Windows
5 réponses
bonjour
commence par mettre des quotes autour de l'année
$myreq = "select * from adherents where annee = '$exer' into outfile 'C:\\temp\\CSV.csv'";
et si ca ne marche toujours pas, fais un echi de ta variable $myreq pour voir à quoi elle ressemble puis teste la directement dans ta bdd via phpmyadmin par exemple.
n'hésite pas non plus à afficher les eventuelles erreurs après l'exécution de la requête via
echo("Error description: " . mysqli_error($conn)); }
bonjour,
si tu supprimes la cause into, la page affiche bien tes enregistrements?
Bonjour,
Une suggestion. Il est fort probable que php ne puisse pas écrire par défaut hors du contexte du serveur web et de sa racine /, et même les dossiers du serveur web devraient par sécurité être interdits en écriture. Tu peux au moins vérifier avec un nom de fichier
into outfile 'CSV.csv'
que tu pourrais retrouver dans le même répertoire que le source php.
Après pour régler les droits d'accès aux répertoires cela doit se faire dans ton serveur web (apache ?).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionVoili, voila! J'ai trouvé comment détourner ce fichu outfile.
J'ai créé un fichier sauvegarde.doc puis avec fwrite je complète mon fichier.
Pour le moment j'ai une seule ligne (la dernière) qui s'écrit mais je vais peaufiner.la requête pour avoir toutes mes lignes et séparation en SPV.
Le fichier sera plus facile à rapatrier.
$file = "./sauvegarde.doc";
$fh = fopen($file, 'r+');
while ($row = mysqli_fetch_array($result))
{
$donnees="ID".$row[0].", ". $row[2]." ,".$row[3].", ".$row[4]." , ".$row[5]." ,".$row[6].", ".$row[7].", ".$row[8].", ".$row[9].", ".$row[10]." ,".$row[11].", ".$row[12].", ".$row[13]."/n";
fwrite($fh, $donnees);
}
fclose($fh);
Version finale qui fonctionne très bien :
<?php $conn=mysqli_connect($DBserveur, $DBlogin, $DBpassword,$DBbase); $lines = file("https://pmcc.wf/fichier-2024.csv"); // Affiche toutes les lignes du tableau comme code HTML foreach ($lines as $line_num => $line) { $myfile= explode(';', htmlspecialchars($line)); $prenom= $myfile[0]; $nom= $myfile[1]; $adhes= $myfile[2]; $don= $myfile[3]; ///le nom est obligatoire /////// if (strlen($nom)>2) { $myreq="INSERT INTO `adherents`(prenom, nom, annee, adhesion) VALUES ('$prenom','$nom','2324', '$adhes')"; //On vérifie la connexion if($conn->connect_error) { die('Erreur : ' .$conn->connect_error); } $exec=mysqli_query($conn,$myreq); } } // Utilisation de drapeau $trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); ?>
C'est peut être scolaire et on doit trouver mieux; mais c'est ma solution pour ce input outfile qui ne doit écrire que dans le fichier parent...si on a l'autorisation pour ce faire.
Merci à tous
Non, j'ai tenté tes conseils... Aucune erreur sur la condition
echo("Error description: " . mysqli_error($conn)); }
et $exe fonctionne bien (int)
je vais chercher encore un peu puis je ferai des sauvegardes directement sur la table...
Connais tu la syntaxe pour sauvegarder les données d'une table (le contraire de DROP).
Mais ce n'est pas le but du jeu car je compte déléguer au président de l'association (qui est plus nul que moi en informatique) une version quasi automatique
Merci quand même
le description error reste à nul. mais ma requête s'affiche... je continue à creuser. Merci quand même de t'être penchée sur mon problème. Si je trouve je mets la solution dans mon post