0

私の Document テーブルには次のものがあります。 id (auto int index), user_id (P.key and links to other table), Doc_Name, abstract

以下のコードを使用すると、別の行が挿入されるだけなので、更新する必要があるときに2つの user_id が同じになります。明らかに、id は auto 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' "
 );
4

2 に答える 2

0

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

MySQL はconcat()連結に使用します。+純粋に数学的な操作です。やっ'a' + 'a'ても は得られませaa0

于 2012-04-22T21:09:01.963 に答える
0

がテーブル内の一意のフィールドである場合user_id、クエリは次のようになります。

$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);
于 2012-04-22T21:13:53.937 に答える