2010-10-19 3 views
-1

salut je ne peux pas mettre à jour une table qui a des clés étrangères sur elle. dans ce tableau, au lieu d'afficher les clés primaires de la clé étrangère, je choisis d'afficher leur nom: c'est un schéma simple: Voici mes tables étrangères:mise à jour simple de la clé étrangère dans le site Web PHP mysql

Taille Tableau:

sId sName 
1 1x1 
2 2x2 

Marque Tableau:

bId bName 
1 brand1 
2 brand2 

Tableau fournisseur:

sId sName 
1 supp1 
2 supp2 

Alors voici mon tableau d'entrepôt en utilisant une instruction de jointure:

pId pName pSize pBrand pSupplier 
1 prod1 1x1 brand1 supp1 
2 prod2 2x2 brand2 supp2 

ici est mon édition sous forme de php et mysql:

########### EDIT PRODUCT 
if(isset($_POST['editproduct'])){ 
$product_id=$_POST["product_code"]; 
$product_name=$_POST["product_name"];  
$size_name=$_POST["size_name"]; 
$brand_name=$_POST["brand_name"];  
$supplier_name=$_POST["supplier_name"];  
$sql = "UPDATE warehouse SET 
product_name='$product_name' 
,size_id='$size_id' 
,brand_id='$brand_id' 
,supplier_id='$supplier_id' 
WHERE 
product_code='$product_code'"; 
$result=mysql_query($sql,$connection) or die(mysql_error()); 
header("location: warehouse.php"); 
} ?> 

la chose étrange est que le premier essai je modifier la table, il ne l'erreur pas . mais pour la deuxième fois, il me demande l'erreur de la contrainte de clé étrangère, :(

J'ai le sentiment que parce que j'utilise une déclaration de jointure dans ma table d'entrepôt, cela entre en conflit avec ma requête de mise à jour puisque celle que je mets à jour est la clé primaire et i afficher uniquement son nom.

+1

[Soupir, php.] (http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/c12np38) Pour commencer, vous avez une injection SQL flagrante dans votre code. – wuputah

+0

je suis désolé mais je n'ai pas d'éducation formelle en sql. – user480359

Répondre

0

référence aux variables $ SIZE_ID, $ brand_id, $ supplier_id dans votre instruction SQL, mais jamais les mettre partout ..

Bien que si vous dites que le montage fonctionne de la la première fois, je suppose que vous pourriez ne pas avoir posté tout votre code?

Questions connexes