J'essaie de lire dans une série de fichiers texte délimité par des tabulations dans des tables MySQL existantes. Le code que j'ai est assez simple:Lire le fichier texte délimité par tabulation dans la table MySQL avec PHP
$lines = file("import/file_to_import.txt");
foreach ($lines as $line_num => $line) {
if($line_num > 1) {
$arr = explode("\t", $line);
$sql = sprintf("INSERT INTO my_table VALUES('%s', '%s', '%s', %s, %s);", trim((string)$arr[0]), trim((string)$arr[1]), trim((string)$arr[2]), trim((string)$arr[3]), trim((string)$arr[4]));
mysql_query($sql, $database) or die(mysql_error());
}
}
Mais peu importe ce que je fais (d'où la coulée avant chaque variable dans l'instruction sprintf) je reçois le « Vous avez une erreur dans votre syntaxe SQL, vérifiez le manuel correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de '' à la ligne 1 "erreur.
Je fais écho au code, je le colle dans un éditeur MySQL et ça marche bien, ça ne s'exécutera pas à partir du script PHP.
Qu'est-ce que je fais mal ??
Si
MISE À JOUR: Voici le echoe'd SQL de:
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A1', 'GBEN', '2.50-2.99m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A2', 'GBEN', '3.00-3.49m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A3', 'GBEN', '3.50-3.99m')
INSERT INTO wheelbase (WheelBaseCode, LanguageCode, WheelBaseDescription) VALUES ('A4', 'GBEN', '4.00-4.49m')
Fait intéressant, j'ai maintenant créer le nombre correct de lignes dans la table, mais les valeurs qu'il insère sont vides.
Cela peut-il être un problème d'encodage dans le fichier texte source?
Je sais que je n'ai pas besoin de la fonte, c'était là juste pour m'assurer que je ne deviendrais pas fou. Votre code devrait fonctionner aussi bien que le mien, mais ce n'est pas le cas. Je n'ai pas besoin de spécifier les noms de champs car j'insère dans les cinq champs (donc je peux juste faire INSERT INTO my_table VALUES). En outre, les deux derniers sont de type DOUBLE, pas VARCHAR. Il n'y a pas de guillemets dans les données, et même si je ne traite que les premières lignes, je reçois toujours l'erreur. –
Eh bien, renvoyez les requêtes avant de les exécuter. Ajoutez-les à votre question. –
Avez mis à jour le poste avec le SQL –