import d un .txt dans bdd

Eléphant du PHP | 123 Messages

18 nov. 2012, 22:53

bonsoir,
j essai d importer via un fichier texte les données séparées par des ; cependant j ai une erreur

j ai fais ceci
//Le chemin d'acces a ton fichier sur le serveur 
$fichier = fopen("CARDIFF_BBDZ.txt", "r"); 

//tant qu'on est pas a la fin du fichier : 
while (!feof($fichier)) 
{ 
// On recupere toute la ligne 
$uneLigne = fgets($fichier, 99999); 
//On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';') 
$tableauValeurs = explode(';', $uneLigne); 
// On crée la requete pour inserer les donner (ici il y a 12 champs donc de [0] a [11]) 
$sql="INSERT INTO autotran VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."',
 '".$tableauValeurs[6]."', '".$tableauValeurs[7]."', '".$tableauValeurs[8]."', '".$tableauValeurs[9]."', '".$tableauValeurs[10]."', '".$tableauValeurs[11]."','".$tableauValeurs[12]."','".$tableauValeurs[13]."',
'".$tableauValeurs[14]."','".$tableauValeurs[15]."','".$tableauValeurs[16]."','".$tableauValeurs[17]."','".$tableauValeurs[18]."','".$tableauValeurs[19]."','".$tableauValeurs[20]."',
'".$tableauValeurs[21]."','".$tableauValeurs[22]."','".$tableauValeurs[23]."','".$tableauValeurs[24]."','".$tableauValeurs[25]."','".$tableauValeurs[26]."','".$tableauValeurs[27]."',
'".$tableauValeurs[28]."','".$tableauValeurs[29]."','".$tableauValeurs[30]."','".$tableauValeurs[31]."','".$tableauValeurs[32]."','".$tableauValeurs[34]."','".$tableauValeurs[35]."','".$tableauValeurs[36]."')"; 

$req=mysql_query($sql)or die (mysql_error()); 
// la ligne est finie donc on passe a la ligne suivante (boucle) 
} 
//vérification et envoi d'une réponse à l'utilisateur 
if ($req) 
{ 
echo"Ajout dans la base de données effectué avec succès"; 
} 
else 
{ 
echo"Echec dans l'ajout dans la base de données"; 
} 
mais ca me retourne l erreur suivante
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'urgence, Allumage automatique des feux, Climatisation automatique à réglage s' at line 3

il y a dans mes données des phrases avec des ' qui ont l air de posé problème
comment puis remedier a cela

merci d avance

edit: j ai resolu mon probleme en passant par un LOAD DATA LOCAL INFILE

ViPHP
ViPHP | 2577 Messages

19 nov. 2012, 09:47

Pour les problèmes de quote, il faut utiliser la fonction mysql_real_escape_string() qui entre autre remplace les ' par \'.

D'ailleurs, il faut également faire la même chose pour toute les chaines dans les ordres SQL. L'utilisation de PDO et du bind de variables permet de s'affranchir de cette modification comme également le load que tu a utilisé.