Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 11h59   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Par défaut besoin d'aide pour requete simple !

Bonjour,

j'ai un problème se syntaxe. Je cherche à "updater" ma base mais ma requète ne marche pas :

Code :
1
2
3
UPDATE art_mod_mat                         
        SET pds = ".(double)$data[1]."
        WHERE ref_art = '".mysql_real_escape_string($data[0])."'
j'ai un fichier MAJ.csv constitué de deux colonnes

Merci de votre aide !

Jac
Joejac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 13h28   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
bonjour,

Et quelle est l'erreur en fait ?
Car la partie SQL de votre requête est juste donc... regardez plutôt du côté de votre code applicatif.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/12/2011, 15h02   #3
Invité de passage
 
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Citation:
Envoyé par punkoff Voir le message
bonjour,

Et quelle est l'erreur en fait ?
Car la partie SQL de votre requête est juste donc... regardez plutôt du côté de votre code applicatif.


Il m'indique :

#1064 - 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 '"A536"' at line 1

A536 était la première valeur de mon fichier.

Cela peut il venir du fichier CSV ?

Je fait la requète directement de PHPMYADMIN.
Joejac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h15   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 671
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 671
Points : 5 404
Points : 5 404
euh... je suppose que tu ne mets pas directement les mysql_real_escape_string dans phpMyAdmin... Donc si tu pouvais nous donner la requête valorisée, ce serait plus clair.
Et le code php qui exécute la requête, ça pourrait être utile aussi.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h20   #5
Invité de passage
 
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Citation:
Envoyé par Celira Voir le message
euh... je suppose que tu ne mets pas directement les mysql_real_escape_string dans phpMyAdmin... Donc si tu pouvais nous donner la requête valorisée, ce serait plus clair.
Et le code php qui exécute la requête, ça pourrait être utile aussi.


euh... bin si, je la met directement dans PHPMYADMIN.

Je l'utilisais avant dans un PHP, lorsque je travaillais en local. Mais là c'est plus rapide de faire juste une requète ... non ?
Joejac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 16h01   #6
Invité de passage
 
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Citation:
Envoyé par Celira Voir le message
euh... je suppose que tu ne mets pas directement les mysql_real_escape_string dans phpMyAdmin... Donc si tu pouvais nous donner la requête valorisée, ce serait plus clair.
Et le code php qui exécute la requête, ça pourrait être utile aussi.


J'ai refait un script PHP pour faire la mis à jour.

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
<?php
 
ECHO "La mis à jours commence, le temps est lié à la taille de votre fichier";
ECHO "<br>";
 
 
//***************************************************************************************************************************
// connection à la base
//***************************************************************************************************************************
 
mysql_connect('xxx','xxx','xxx')or die("Impossible de se connecter à la base de données"); 
mysql_select_db('xxx') or die("ça marche toujours pas");
 
 
//***************************************************************************************************************************
// Lecture du fichier MAJ.csv ordre "ref_art";... tableau sans les titres
//***************************************************************************************************************************
 
$row = 1;
  $fp = fopen ("MAJ.csv","r");
  while ($data = fgetcsv ($fp, 1000, ";")) 
    {
    $num = count ($data);
 
//***************************************************************************************************************************
// Update les valeurs du fichier dans la base 'art_mod_mat'
//***************************************************************************************************************************
 
$query="UPDATE art_mod_mat                         
        SET pds = ".(double)$data[1]."
        WHERE ref_art = '".mysql_real_escape_string($data[0])."'";
 
mysql_query($query) or die("Erreur de requête : ".$query);
 
Echo $data[0]; Echo $data[1]; Echo "//" ;
 
 
$row++;
    }   
ECHO " c'est fait";
ECHO "<br>";
 
  fclose ($fp);
 
mysql_close(); 
 
?>


Et... ça marche po ... et y pas d'erreur !
En fait j'ai fait un echo en fin de fichier pour tester, il "fait" bien la totalité du fichier mais n'inscrit rien dans la BDD

Pouvez vous m'éclairer ?
Joejac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 17h06   #7
Nouveau Membre du Club
 
Homme
Développeur informatique
Inscription : novembre 2011
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : novembre 2011
Messages : 31
Points : 37
Points : 37
Bonjour,

J'ai repris ton script php, en créant deux colonnes dans ma BD, avec un fichier csv bidon de deux colonnes remplie avec des char, et ton script met la BD à jour correctement.

Peut être que les colonnes du tableau data que tu utilises sont inversées.
Ou peut être que rien n'est inséré dans la BD parce que les données de ton fichier csv ne coordonnes pas avec les valeurs de ta base.

En tout cas ne cherche pas du côté de l'algorithme car le code fonctionne.
10903513 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 19h02   #8
Invité de passage
 
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 1
Points : 1
Le pb est résolu.

en fait dans mon fichier CSV les variables étaient avec des "," et non des "."


ça marche ouf !

Merci à ceux qui m'ont répondu !
Joejac est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h12.


 
 
 
 
Partenaires

Hébergement Web