PHP MySQL LOAD DATA INFILE Aider
J'ai juste ne peut pas sembler obtenir cette requête droit. Fondamentalement, je suis prise d'un fichier csv à partir d'un formulaire et d'essayer de le charger dans la base de données. J'ai pris la majorité de la requête à partir de phpmyadmin. je devrais être en utilisant le fichier temp droit? ici, il est...
<form name = "price_chart" method="post" action="index.php?option=<?php echo $option ?>&task=complete" enctype="multipart/form-data">
<label>File: </label>
<input type="file" name="white" id="white"/><br />
<input type="hidden" value="TEST" name = "test" />
<input type="submit" name = "upload" value="Upload File" />
</form>
<?php
}
function complete($option){
$pfile = $_FILES['white']['name'];
$ptmpName = $_FILES['white']['tmp_name'];
$test = $_POST['test'];
$result = mysql_query("LOAD DATA LOCAL INFILE '$ptmpName' REPLACE INTO TABLE 'jos_rates_table' FIELDS TERMINATED BY ',' ENCLOSED BY ' ' ESCAPED BY '\\' LINES TERMINATED BY '\n'('country' , 'rate')")or die ('Error: '.mysql_error ());
while ($row = mysql_fetch_array($result)) {
}
$num_rows = mysql_num_rows($result);
echo $num_rows;
}
Mise à JOUR: Voici le message d'Erreur
Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de "jos_rates_table' FIELDS TERMINATED BY ',' ENCLOSED BY '" ÉCHAPPÉ PAR '\' LIGNES ' à la ligne 1
Et quel est le problème? Message d'erreur?
OriginalL'auteur Greg Thompson | 2011-05-24
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour échapper à la barre oblique pour les lignes clause de résiliation, sinon, vous venez d'ajouter une nouvelle ligne à votre requête.
LINES TERMINATED BY '\\n'
Mysql ne
\n
, mais PHP essaie d'interpréter ces de sorte que vous avez à s'échapper.Vous avez d'autres questions, mais vous n'avez pas dit ce qui se passe.
supprimez les guillemets autour du nom de la table, de faire mes mises à jour, et essayer de nouveau, laissez-nous savoir.
grâce Fosco, l'erreur est maintenant... Erreur: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de 'REMPLACER DANS la TABLE 'jos_rates_table' FIELDS TERMINATED BY ',' ENCLOSED BY '" ES " à la ligne 1
L'évasion pour les lines terminated by est juste \, donc pas de s'échapper, il \\? littéralement la requête de phpmyadmin qui fonctionne est... LOAD DATA LOCAL INFILE '/home/simpleld/tmp/phpoGAzn0 " REMPLACER DANS le TABLEAU
jos_rates_table
FIELDS TERMINATED BY ',' ESCAPED BY '\\' LINES TERMINATED BY '\n'Ok j'ai mis à jour... qu'est-ce que ('pays','taux') de faire dans la requête ci-dessus?
OriginalL'auteur Fosco
Ne sais pas pourquoi êtes-vous à l'aide de ce long-cul url pour l'action au lieu de index.php ou juste "? Aussi, je pense que vous avez besoin de spécifier ENCTYPE="multipart/form-data", puisque c'est un formulaire d'upload d'un fichier.
Pas sûr de savoir comment tout simplement d'insérer le fichier, je pense que vous avez besoin pour obtenir le contenu du fichier, puis d'exploser et de faire insérer
}
Ou vous pouvez utiliser fgetcsv - vérifier cet article: http://www.programmingfacts.com/import-csvexcel-data-mysql-database/
OriginalL'auteur AR.