sql >> データベース >  >> RDS >> Mysql

「影響を受けた行はありません」と行が正常に更新されたものを区別します-同じ値に(MySQLとPHP)

    簡単な解決策は2つのクエリです。

    まず、SELECTクエリを実行して、mysqli_num_rows()を使用して行が存在するかどうかを確認します。

    次に、行が存在する場合は、UPDATEクエリを実行してmysqli_affected_rows()を使用できます。

    [編集]

    ...単一の呼び出しを探している人のための潜在的な代替案を提案します。 INSERTを実行することに興味があるのか​​、それとも純粋にUPDATEを実行することに興味があるのか​​わかりません。以下は考えるべき食べ物です:

    トップコメントから@ http://php.net/manual/en/ mysqli.affected-rows.php :

    「INSERTINTOONDUPLICATE KEY UPDATE」クエリでは、affected_rowsが成功したクエリで1行あたり0または1のみを返すと予想される場合がありますが、実際には2を返す場合があります。

    Mysqlマニュアルから:「ON DUPLICATE KEY UPDATEを使用すると、行が新しい行として挿入された場合、行ごとの影響を受ける行の値は1になり、既存の行が更新された場合は2になります。」

    参照: http://dev.mysql.com /doc/refman/5.0/en/insert-on-duplicate.html

    行ごとの合計は次のとおりです。 :

    +0:行が更新または挿入されていません(行はすでに存在している可能性がありますが、UPDATE中にフィールド値が実際に変更されていないため)

    +1:行が挿入されました

    +2:行が更新されました

    ニーズに合わせて作ることができますか?




    1. SQLiteの日付に月を追加する

    2. OracleEBSパスワードの有効期限/ポリシー/設定に関する便利なクエリ

    3. Laravel:PDOException:ドライバーが見つかりませんでした

    4. Rails開発-「localhost」のMySQLサーバーに接続できません(10061)