2009-08-20 9 views
3

私はUPDATE/INSERT要求をやって忙しいですが、ここで核心である:MySQLの - 別のUPDATE他のINSERT文

table PLAYERS { 
    player_id 
    game_id 
    team_id 
    position 
    number 
} 

起こることになって何を以下の通りです:

私があればそこにテストしますエントリは player_id = '$player_id' AND game_id = '$game_id' AND team_id = '$team_id'です。

がある場合は、次のようになります。

position = '$position' AND number = '$number'

は、私は、クエリ間のPHPの検証を必要とせずに、単にMySQLのクエリ言語を使用してこれを行うことができます方法はありますか?

+0

を実行されないことを保証することができ、私はこのテーブルのPRIMARY KEYを持っていますが、game_idにインデックスを持っていない、player_idそれは場合に役立ちます、とTEAM_ID、... –

+0

あなたはゲーム、選手とチームのフィールドを横切る化合物の主キーを作成することができます。 –

答えて

0

これを複数のIF文で修正して、挿入するか更新するかを決定しました。そのトランザクションでない限り動作しません

6
INSERT INTO TABLE (COLUMNS) VALUES(FIELDS) UPDATE ON DUPLICATE KEY position = somevalue, number=number 

1)が一意のフィールドを持つレコードが存在する場合)
2を挿入しよう(主キー、ユニークインデックス、など)が代わりにそのフィールドを更新します。

+0

これは私のクエリです: 'INSERT INTO players(game_id、player_id、position、number)VALUES( '$ game_id'、 '$ players [$ i]'、 '$ position [$ i]'、 '$ number') UPDATE ON DUPLICATE KEY position = '$ position [$ i]'、number = '$ number' ' 次のエラーが表示されます。 'SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックしてください。正しい構文はUPDATE ON DUPLICATE KEYの位置= 'LH Prop'、number = '1' at line 1'を参照してください。 アイデア? –

+1

はい、エラーがあります。あなたは文字列として数字を入力しています:) – Havenard

+0

私はこのように全部の時間を挿入していました。 –

0

、またはあなたがDBに対する同時要求が