2012-04-22 12 views
0

を挿入update-重複キーの上に私が持っている:私は以下のコードを使用すると id (auto int index), user_id (P.key and links to other table), Doc_Name, abstract挿入は...繰り返し私のドキュメント表の

は、それはちょうど私がそれを持っている必要があるときに、同じだuser_idは2を持っているので、別の行を挿入します更新しました。明らかにIDはそれが自動intであるので番号で続行します、そして、なぜこれが動作しないのかと何かがあるかどうかわかりません。

$the_query = sprintf("INSERT INTO `document` (`user_id`,`Doc_Name`,`abstract`) 
VALUES ('%d','%s','%s')",'$user_id', '$Doc_Name', '$abstract') 
ON DUPLICATE KEY UPDATE 
user_id=user_id+'$user_id', 
Doc_Name=Doc_Name+'$Doc_Name', 
abstract=abstract+'$abstract' " 
); 
+1

あなたは 'SHOW CREATE TABLE Document' –

+0

フルテーブルコードの出力を表示することができますか? – user1296762

答えて

0

カーゴ・カルト・プログラミング? %プレースホルダなしでsprintf()を使用するのはちょうど....間違いです。また、なぜ更新されたフィールドに追加?

MySQLは、連結にconcat()を使用します。 +は純粋に数学的演算である。 'a' + 'a'を実行してもaaが表示されない場合は、0が表示されます。 user_idは、一意のフィールドは、テーブルにある場合

+0

私は%プレースホルダーを持っていましたが、動作しませんでしたが、バックを入れることができます。 – user1296762

0

、クエリは次のようになります。

$query = sprintf(" 
INSERT INTO 
    `document`(`user_id`, `Doc_Name`, `abstract`) 
VALUES 
    ('%s', '%s', '%s') 
ON DUPLICATE KEY UPDATE 
    `Doc_Name` = VALUES(`Doc_Name`), 
    `abstract` = VALUES(`abstract`) 
", $user_id, $Doc_Name, $abstract); 
+0

セッションが実行されている場合、 'WHERE id = '$ _ SESSION [user_id]''のようなものを追加する必要があります。コードを – user1296762

+0

に変更しました。私はクエリをthe_queryに変更しました。別の行が追加されました。 – user1296762

+0

OK、一意のフィールドを追加する必要があります: 'ALTER TABLE document ADD UNIQUE(user_id)' –

関連する問題