2010-12-15 16 views
0

こんにちは皆、このコードは実際にphpに新しいです... 私は何をしようとしています、私はデータベースに1つのフィールドを挿入しようとしていますId_ObjとそのVarCharしかし、それは私に教えてください "フィールドリストの"不明な列 'Id_Obj4' 私は本当にこのような挿入を行うには何を考えていない 変数と単に文字列を渡すときにそれが本当にこのように見えるので、私が初めて申し訳ありませんでした怠惰:SPHPを使ったMySQLの挿入

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); 

データベースのフィールドは、ID、Id_Objあり、Num_Sides

+1

'' IdObj $ count ''という文字列で何をしようとしていますか? 'echo $ t;'とクエリを見てみると便利かもしれません。おそらくあなたの考え方を構築していないでしょう。 – cdhowie

+0

あなたのコードの最後に 'print $ t;'を実行することで、挿入がどのように見えるかを知ることができます。 – Spudley

答えて

2

あなたは、インサートの前後に引用符を必要とする私を助けてください、私はまた、あなたがSQLインジェクションを防ぐために、あなたがテーブルに挿入されているすべての変数にmysql_real_escape_stringの使用をお勧めしますINSERT INTO Table_Faces (Id_Obj, Num_Sides) VALUES('asdf','foo')

すなわち

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); 

値攻撃。

+1

mysql_real_escape_stringは、特定の状況下でSQLインジェクションの脆弱性をすべて排除するわけではないことに注意してください。代わりに適切なパラメータ化されたクエリを使用するほうがよいでしょう。 – cdhowie

+0

私はそれを知りませんでした、それは知って良いです。私は通常、パラメータ化されたクエリとmysqliを使用します。 – GWW

+0

@cdhowie、どのような状況ですか?それとも私はそれを別の質問として尋ねるべきですか? – TRiG

0

あなたはテーブルTable_FacesId_Obj4と呼ばれる新しいフィールドを作成しようとしているか、フィールドId_ObjId_Obj4の値を追加しようとしていますか?

はすぐそこボビーテーブルエラーの巨大な可能性があることを

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

注意してみてください。

1

問題は、クエリの値を引用符で囲む必要があることです。これを試してください:あなたが明示的に直接セキュリティ上の問題で、クエリ、SQLインジェクションを使用することができますURLを持って皆に$ _GET []変数を貼り付ける

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

注意。

関連する問題