Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
709 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Function insérer données texte dans mysql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Function insérer données texte dans mysql

n°2160050
thales69
Posté le 12-10-2012 à 14:42:25  profilanswer
 

Bonjour à tous,
 
j'ai un petit soucis avec mon script qui devrait normalement remplir ma base de donnée...  
D'après l'erreur qui m'est renvoyée (La table Estimations2012.12-10-2012 n'a pas ete videe de son contenu.Erreur Ligne 1 : 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 '-10-2012 VALUES ( 'South Africa 1', 'Premier League', '8', '2012-10-26', '20:00:' at line 1 INSERT INTO Estimations2012.12-10-2012 VALUES ( 'South Africa 1', 'Premier League', '8', '2012-10-26', '20:00:00', 'Maritzburg Utd', 'Kaizer Chiefs', '13',  '22', '66', '72', '46', '25', '11', '3 ' ) )  
je pense que l'erreur vient de la ligne $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.' \' ) ';   mais je ne vois pas où est l'erreur, ça doit être un truc tout con mais je vois pas.
Si quelqu'un a une idée je suis preneur ;) Je précise que mon fichier $date.txt est une fichier au format CSV.
Merci
 

Code :
  1. # Fonctions vider_table et insert_Into_Table
  2.     <?php
  3. function vider_table($table_a_vider){
  4.     $sql  = "TRUNCATE TABLE ".$table_a_vider;
  5.     mysql_query($sql);
  6.    
  7.     if(mysql_query($sql))
  8.       // SUCCES
  9.       echo "La table ".$table_a_vider." a ete videe !";
  10.     else
  11.       // ECHEC
  12.       echo "La table ".$table_a_vider." n'a pas ete videe de son contenu.";
  13.   }
  14.   // ON VIDE $table_a_vider
  15.   vider_table($table_a_vider);
  16.   ?>
  17.  
  18.   <?php
  19. function insertIntoTable( $fileName, $tableName, $con )
  20. {
  21.     $file = fopen( $fileName, 'r' );
  22.     $k = 0;
  23.     while ( ! feof( $file ) )
  24.     {
  25.         $k++;
  26.         $line = fgets( $file, 1024 );
  27.         if ( strlen( $line ) > 2 )
  28.         {
  29.             $line = addslashes( $line );
  30.             $line = str_replace ( ";", "', '", $line );
  31.             $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.' \' ) ';
  32.             if ( ! mysql_query ( $requete, $con ) )
  33.                 echo 'Erreur Ligne '.$k.' : '.mysql_error().'<br>'.$requete.'<br>';
  34.         }
  35.         else
  36.             echo 'Ligne '.$k.' ignoree.<br>';
  37.     }
  38.     echo '<p>Insertion du fichier '.$fileName.' termine.</p><hr>';
  39.     fclose( $file );
  40. }
  41. ?>
  42.   # Nettoyage et Remplissage de la table Estimations2012.$date
  43. <?php
  44. $a = "$date.txt";     
  45. $b = "Estimations2012.$date";
  46. $c = mysql_connect('localhost', 'root', 'root' );
  47. vider_table($b);
  48. insertIntoTable( $a, $b, $c);
  49.             ?>


Message édité par thales69 le 12-10-2012 à 14:49:03
mood
Publicité
Posté le 12-10-2012 à 14:42:25  profilanswer
 

n°2160068
rufo
Pas me confondre avec Lycos!
Posté le 12-10-2012 à 15:35:18  profilanswer
 

Pb d'échappement de caractères. Voir les ' et les " s'ils sont bien tous échappés.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2160087
thales69
Posté le 12-10-2012 à 16:17:21  profilanswer
 

Merci pour ta réponse, j'avais déjà vérifié ça mais sans succès, je ne vois pas ce qui coince !

n°2160118
czh
Posté le 12-10-2012 à 20:53:56  profilanswer
 

Dans "INSERT INTO Estimations2012.12-10-2012", le tiret est un opérateur. Il faut faire "INSERT INTO `Estimations2012.12-10-2012`".
 
edit : Et dans le truncate aussi pendant qu'on y est. En gros quand tu utilises une table au nom exotique faut le protéger avec des backquotes `nom exotiqu-e de t*able`.


Message édité par czh le 12-10-2012 à 20:56:13
n°2160119
thales69
Posté le 12-10-2012 à 21:39:17  profilanswer
 

Merci pour ta réponse.
Je comprend bien par contre dans mon cas où j'utilise une fonction comment je peux sur la ligne $requete = 'INSERT INTO '.$tableName.' VALUES ( \''.$line.' \' ) ';  protéger ma variable ?
 
il faudrait écrire $requete = 'INSERT INTO '.'$tableName'.' VALUES ( \''.$line.' \' ) ';  ça ne peux pas fonctionner ?

n°2160124
thales69
Posté le 12-10-2012 à 23:15:32  profilanswer
 

Bon ben j'ai changé 12-10-2012 en 12102012 et effectivement sans les tirets ça marche nickel. Merci pour l'info czh !
Par contre si quelqu'un a une idée de la syntaxe quand il y a les tirets je suis preneur car je m'y suis cassé les chicots ;)

n°2160158
czh
Posté le 13-10-2012 à 22:50:08  profilanswer
 

$requete = 'INSERT INTO `'.$tableName.'` VALUES ( \''.$line.' \' ) ';
 
ou (plus clair)
 
$requete = "INSERT INTO `$tableName` VALUES ('". $line .' \' ) ';

n°2160191
thales69
Posté le 14-10-2012 à 18:51:12  profilanswer
 

Merci à toi.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Function insérer données texte dans mysql

 

Sujets relatifs
Findby Login and password Myeclipse Mysql[résolu] taper texte dans champs text et affichage dynamique
imprimer des feuilles excel générées à partir d'une liste de donnéesRemplir une base MySQL avec une base SQL
Base de données en ligneConfiguration apache - php -mysql
Requête mysql dans un fichier bashbase de données SQL
Récupération de données dans un fichier HTML Acte IIIAjouter informations Base de données
Plus de sujets relatifs à : Function insérer données texte dans mysql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR