2010-12-15 32 views
0

Salut tout le monde im coincé avec ce code im pratiquement nouveau à php ... ce que j'essaie de faire est im, en essayant d'insérer dans la base de données un champ appelé Id_Obj et son un VarChar mais quand j'essaie de envoyez-le il me dit "Colonne Inconnu 'Id_Obj4' dans 'champ Liste' je ne savais vraiment pas quoi faire l'insertion ressemble à ceci j'ai oublié qu'il était différent en passant une variable et juste la chaîne de sorte qu'il ressemble vraiment à ceci j'étais paresseux la première fois désolé: SMySQL Insérer avec PHP

while($info=mysql_fetch_Array($data)) 
{ 
print "name :".$info['Id']." "; 
$count=$info['Id']; 
} 
    $t="INSERT INTO Table_Faces(Id_Obj,Num_Sides)VALUES("; 
    $t = $t."IdObj$count".",".$_GET["ns"]; 
    $t = $t.")"; 
    mysql_query($t); 

les champs de la base de données sont Id, Id_Obj, Num_Sides

Aidez-moi s'il vous plaît

+1

Qu'essayez-vous de faire avec la chaîne '" IdObj $ count "'? Il pourrait être utile de 'echo $ t 'et de jeter un oeil à votre requête - vous ne construisez probablement pas ce que vous pensez être. – cdhowie

+0

vous pouvez découvrir à quoi ressemble l'insertion en faisant 'print $ t;' à la fin de votre code. – Spudley

Répondre

2

Vous avez besoin des guillemets autour de votre insérer des valeurs

while($info=mysql_fetch_Array($data)) 
{ 
    print "name :".$info['Id']." "; 
    $count=$info['Id']; 
} 

$t="INSERT INTO Table_Faces(Id_Obj,Num_Sides)VALUES("; 
$t = $t."'IdObj$count'".",'".$_GET["ns"]."'"; 
$t = $t.")"; 
mysql_query($t); 

-à-dire INSERT INTO Table_Faces (Id_Obj, Num_Sides) VALUES('asdf','foo')

Je vous recommande également utiliser mysql_real_escape_string sur toutes les variables que vous insérez dans une table pour éviter une injection SQL attaques.

+1

Notez que 'mysql_real_escape_string' n'élimine pas toutes les vulnérabilités d'injection SQL dans certaines circonstances. Vous feriez mieux d'utiliser des requêtes paramétrées appropriées à la place. – cdhowie

+0

Je ne le savais pas, c'est bon à savoir. J'utilise généralement des requêtes paramétrées et mysqli. – GWW

+0

@cdhowie, Quelles circonstances? Ou devrais-je poser cela comme une question distincte? – TRiG

0

Êtes-vous en train de créer un nouveau champ appelé Id_Obj4 dans le tableau Table_Faces ou essayez-vous d'ajouter une valeur de Id_Obj4 dans le champ Id_Obj?

Essayez

$t = 'INSERT INTO Table_Faces (Id_Obj, Num_Sides) VALUES '; 
$t .= '("IdObj' . $count . '", "' . $_GET['ns'] . '")'; 

Notez qu'il ya un énorme potentiel pour les erreurs de tableaux Bobby là.

1

Le problème est que les valeurs de votre requête doivent être indiquées. Essayez ceci:

$t='INSERT INTO Table_Faces(Id_Obj,Num_Sides)VALUES('; 
$t .= '"IdObj' . $count . '", "' . $_GET["ns"] . '")'; 
mysql_query($t); 

Notez que vous collez explicitement un $ _GET [] variable dans votre requête, ce qui est un problème de sécurité directe, tout le monde qui a l'URL peut utiliser l'injection SQL.