2

重複キーなどへの挿入に変換しようとしていた簡単なクエリがあり、mysqlガイドに従いましたが、何らかの理由でテキストが更新されません。ただし、新しい行は正常に作成されます。どんな助けでも大歓迎です。クエリの目的は、少量のテキストを追加および更新することです。

$sql = "INSERT INTO fetss.ocs_extended(ocsID, internalNOTE)
            VALUES('" .(int)$_POST['id'] ."', '". $db- >quote($_POST['note_desc']) ."')
            ON DUPLICATE KEY UPDATE internalNOTE = VALUES('". $db->quote($_POST['note_desc']) ."')";

もう少し単純にする:

$sql = "INSERT INTO database.tablename(ID, Description)
VALUES(ID, Description) on Duplicate Key Update Description = VALUES(Description)"  
4

2 に答える 2

0

INSERT の代わりに REPLACE を使用する

置換を使用すると、重複キーを持つ行が既に存在する場合、MySQL は古い行の値を指定された値に置き換えます

于 2012-09-12T21:51:56.677 に答える
0

試す:

$sql = sprintf("INSERT INTO fetss.ocs_extended(`ocsID`, `internalNOTE`)
                VALUES(%d, '%s')
                ON DUPLICATE KEY UPDATE
                `internalNOTE` = VALUES(`internalNOTE`)",
                (int)$_POST['id'],
                $db->quote($_POST['note_desc']));

以前sprintfは SQL を少し読みやすくしていましたが、クエリの値で説明を更新したいので、値を指定する必要はありません。insert ステートメントの値を使用するように指定するだけです。列名。

任意の文字列に更新したい場合は、次のようにします。

INSERT INTO foo (id, desc) VALUES(1, 'testing')
ON DUPLICATE KEY UPDATE
desc = 'some other string that is not testing';

VALUES違いは、最初のクエリの問題である関数を使用しないことです。

于 2012-09-12T21:47:06.227 に答える