pour afficher mes erreurs sql, j'utilise
Code : Tout sélectionner
echo mysql_error().mysql_errno();
Code : Tout sélectionner
echo mysql_error().mysql_errno();
Je veux bien qu'il y ait une erreur, mais dans ce cas un copier/coller dans phpmyadmin ne devrait pas fonctionner...1064 Erreur de syntaxe près de
ah bon tu crois... et çaPas tout à fait, il a cité mysql_error et non mysql_errnoIl l'avait citéTu as mysql_errno()
Bref, montre le code php associé a la requete, d'apres la liste des erreur 1064 corresponderai a une erreur de quoteecho mysql_error().mysql_errno();
Code : Tout sélectionner
/* Paramétrage */
//Nom de la table:
$table = "occasions";
//Séparateur :
$separateur = ";";
//La première ligne correspond aux champs
$firstline = "non";
//La première colonne est l\'identifiant
$firstcol = "non";
//Fichier à convertir:
$type = "onserver";
//Nom fichier:
$fichier_s = "test.csv";
/* Variables */
$lignes = array();
$erreurs = array();
$separateur = (empty($separateur)) ? ";" : $separateur;
$table = ((empty($table)) ? "no_title" : $table);
/* En cas d'upload */
if($type == "upload")
{
$fichier = $_FILES['fichier_u']['tmp_name'];
}
else
{
/* Vérifie que le fichier existe sur le serveur */
$fichier = $fichier_s;
if (!file_exists($fichier))
{
echo "<span class='erreur'>Fichier introuvable !<br>Importation stoppée.</span>";
exit;
}
}
/* Ouvre le fichier */
$fichier = file($fichier);
/* Enleve les caracteres speciaux de fin de ligne */
$fichier = str_replace(chr(10), "", $fichier);
$fichier = str_replace(chr(13), "", $fichier);
/* Place tout dans un tableau */
foreach($fichier as $ligne)
{
$champs = explode($separateur, $ligne);
array_push($lignes, $champs);
}
$requete = "";
if(isset($firstline) AND $firstline == "oui")
{
/* Insertion des commentaires */
$i = 0;
$nb_col = count($lignes[0]);
$requete .= "CREATE TABLE $table (";
while(isset($lignes[0][$i]))
{
/* Trouve le max et le type */
$retour = FindMaxType($lignes, $i);
/* Si champ sans nom, attribution d'un nom automatique */
$lignes[0][$i] = (($lignes[0][$i] == "") ? "no_title$i" : $lignes[0][$i]);
/* Mets la ligne */
$requete .= "`".mysql_escape_string(strtr($lignes[0][$i], " ", "_"))."`";
/* Ajoute le type de champ */
$requete .= (($retour[1] == "Y") ? " INT($retour[0])" : " VARCHAR($retour[0])");
/* Cree l'identifiant si necessaire & si possible */
if($i==0 AND isset($firstcol) AND $firstcol=="oui")
{
if($retour[1]=="Y") # Si que des chiffres
{
$requete .= " PRIMARY KEY NOT NULL AUTO_INCREMENT";
}
else
{
array_push($erreurs,"La première colonne ne peut pas être un identifiant car elle ne contient pas que des valeurs numériques.");
}
}
$i++;
/* Termine l'affichage par , ou par ; */
$requete .= ((isset($lignes[0][$i])) ? ", " : ");");
}
/* Supprime la premiere ligne du tableau */
array_shift($lignes);
}
/* Insertion des commentaires */
$j = 2;
$k = 0;
/* Génère les enregistrements */
foreach($lignes as $ligne)
{
$k = $k+1;
unset($classe, $title);
$classe = "";
$title = "Nombre d'enregistrements : ".count($ligne);
$i = 0;
/* Erreur dans le fichier */
if(isset($firstline) AND $firstline == "oui" AND count($ligne)!=$nb_col)
{
$title = "Ligne $j: nombre d'enregistrements (".count($ligne).") différent du nombre de champs de la table ($nb_col).";
$classe = "erreur";
if(!in_array("Des erreurs de nombre de champs ont été détectées dans le fichier !",$erreurs))
{
array_push($erreurs,"Des erreurs de nombre de champs ont été détectées dans le fichier !");
}
}
$requete .= 'INSERT INTO '.$table.' VALUES ("'.$k.'",';
while(isset($ligne[$i]))
{
$requete .= "\"".mysql_escape_string(trim($ligne[$i]))."\"";
$i++;
$requete .= ((isset($ligne[$i])) ? ", " : "); ");
}
$j++;
}
/* Affichage des erreurs */
foreach($erreurs as $value)
{
echo "<li><span class='erreur'>$value</span></li>";
}
/* Affichage des requetes */
echo "<br><hr size=1>$requete";
/* connexion et insertion dans la base */
connexion();
$result = mysql_query($requete);
if (!($result)) { echo mysql_error().mysql_errno(); }
mysql_close();
$requete .= ((isset($ligne[$i])) ? ", " : "); ");
a cause du while qui limite deja ce testCode : Tout sélectionner
INSERT INTO occasions VALUES ("1","prau", "PRESTIGE AUTOMOBILES", "", "ORLEANS", "31782", "2004", "10/08/2004", "VP", "FIAT", "Panda 1.3 JTD70 Multijet 16v Class", "MFT5112EN550", "CI", "GO", "4", "4", "43210", "Réels", "JAUNE VANILL", "0", "N", "12 mois pièces et main d\'oeuvre", "PITHIVIERS", "Anti-blocage des roues|Coussins gonflables|Direction assistée|Vitres électr. et fermeture centralisée|Radio CD");
INSERT INTO occasions VALUES ("2","prau", "PRESTIGE AUTOMOBILES", "", "ORLEANS", "31803", "2004", "16/12/2004", "CTTE", "FORD", "Connect Fg T200 TDCI 75CV", "PT2BHPABB", "Fourgon", "GO", "7", "2", "24642", "Réels", "BLANC", "10500", "O", "12 mois pièces et main d\'oeuvre", "ORLEANS", "Direction assistée");
qui correspond au début du 2ème insert que l'on voit iciErreur de syntaxe près de '; INSERT INTO occasions VALUES ("2","prau", "PRESTIGE AUTOMOBILE' à la ligne 11064
echo("<p>". $requete ."</p>\n");
Récupère ce que ça affiche et colle nous ça ici si tu ne vois pas l'erreur toi-même avant.//.....
$requete .= "INSERT INTO ".$table." VALUES ('". $k ."','";
while(isset($ligne[$i]))
{
$requete .= "'".mysql_escape_string(trim($ligne[$i]))."'";
$i++;
$requete .= ((isset($ligne[$i])) ? ", " : "); ");
}