2012-05-01 2 views
0

私は、このコマンドを持っている:この場合、ネストされたINSERT/SELECTコマンドはどのように使用しますか?

INSERT INTO table2 (username,profile) SELECT DISTINCT username,profile 
FROM table1 WHERE profile='$profile' and username <> '$sender' 

は私の問題は、私はこれをしたいです:私だけusernameはDISTINCTになりたい:。タイプはつもり

重要「string」を言って、同じ文字列でされINSERT INTO table2 (username,profile,type)profiletypeは同じものにすることができます。 また、profileは常に同じ値になります。

どうすれば実現できますか?

どうもありがとう、(それがあなたに何を意味する場合、およそBobby Tablesを読みに行く)$profile$senderが可能SQLインジェクション攻撃の洗浄されていることを絶対確実てくださいくださいください

+0

こんにちは、実際にはプロフィールは常に同じです。投稿でそれを編集させてください。 – alexx0186

答えて

3
INSERT INTO table2 (username, profile, type) 
SELECT username, profile, "string" 
FROM table1 
WHERE profile='$profile' AND username <> '$sender' 
GROUP BY username 

について。 farは、SQL用に評価されないパラメータとして変数を渡すプリペアドステートメントを使用する方が良いでしょう。私はあなたが何かを出力のようなを探しているという巨大な仮定を作ってるんだ

+0

こんにちは、チップのおかげで。私はmysql_real_escape_string()を使用しました。それは良い保護のようですね。ありがとう – alexx0186

+0

これはいいですが、過去に悪用可能なバグがありました。誰が知っている、おそらくより多くが見つかりますか?パラメータ化されたステートメントは、より安全なオーダです。 – eggyal

+0

お返事ありがとうございます。私は 'group by 'のためにmanuelを探しています。それは、私が望む' DISTINCT'と同じ効果があるようには見えません。とにかくそうなっていますか? – alexx0186

1

...あなたが副選択にGROUP BYステートメントを適用する必要が

UserFred profile1 type1 
UserBill profile2 type1 
UserJim profile1 type8 

...

INSERT INTO table2 (username,profile) 
    SELECT DISTINCT username,profile 
    FROM table1 WHERE profile='$profile' and username <> '$sender' 
    GROUP BY username; 
関連する問題