[MYSQL][CSV]UPDATE depuis un fichier php

Eléphanteau du PHP | 38 Messages

24 mai 2012, 16:02

Bonjour,

A partir d'un fichier csv je souhaite mettre à jour le champ d'une de mes tables.
Je récupère bien les infos souhaités dans mon csv.
D'après les sorties d'ecrans, tout se passe bien au niveau de ma requête mais il y a aucune modification effectuée dans ma base de données.

Quand je copie-colle directement la requête générée depuis mon fichier dans ma base de données les modifications se font bien.

Voici ma requête en question
UPDATE ps_attribute_lang al, ps_product_attribute pa, ps_product_attribute_combination pac 
SET al.redoute='0WRXDL62' WHERE al.name='50 ' and pa.id_product='2' 
and pa.id_product_attribute=pac.id_product_attribute 
and pac.id_attribute=al.id_attribute
Le problème pourrait venir de la jointure des tables dans le Where?
Je n'ai vraiment aucune idée.

Merci d'avance
Nats

ViPHP
ViPHP | 2577 Messages

24 mai 2012, 16:20

Bonjour,

Il faut tester mysql_errno() pour voir si la requete s'execute bien
Puis tester mysql_affected_rows() pour voir combien de lignes ont été modifiée.

Eléphanteau du PHP | 38 Messages

24 mai 2012, 16:55

Bonjour,

Dans les deux cas, j'ai 0 mysql_errno() et mysql_affected_rows().

je m'en doutais pour mysql_affectec_rows vu que je ne voyais aucune modif dans la base.

je copie-colle la même requête dans phpmyadmin et j'ai 3 lignes modifiées

je ne sais plus quoi faire
Nats

Eléphanteau du PHP | 38 Messages

24 mai 2012, 17:08

Voici mon php
<?php
//Le chemin d'acces a ton fichier sur le serveur
$fichier = fopen("test2.csv", "r");

//tant qu'on est pas a la fin du fichier :
while (!feof($fichier))
{
// On recupere toute la ligne
$uneLigne = fgets($fichier, 1024);
//On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';')
$tableauValeurs = explode(';', $uneLigne);

if(is_array($tableauValeurs) && isset($tableauValeurs[2])) {
$sql = "UPDATE ps_attribute_lang al, ps_product_attribute pa, 
ps_product_attribute_combination   pac 
SET al.redoute='".$tableauValeurs[2]."' 
WHERE al.name='".$tableauValeurs[5]."' 
and pa.id_product='".$tableauValeurs[3]."' 
and pa.id_product_attribute=pac.id_product_attribute 
and pac.id_attribute=al.id_attribute";
		
echo $sql."<br />";

$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 <br />";
echo mysql_errno($liendb) . ": " . mysql_error($liendb) . "<br />";
echo "Nombre de Lignes Affectées: " .mysql_affected_rows()."<br />";
}
else
{
echo"Echec dans l'ajout dans la base de données <br />";
}

echo "traitement terminé";

?>


Merci d'avance
Nats