php - user_idがテーブル内で一意の場合はレコードを挿入し、更新しない場合は列を挿入します

原文 php mysql pdo insert insert-update

user_idがテーブルmapで一意である場合はレコードを挿入する必要がありますが、そうでない場合は、user_id =:user_idのデータを使用してその行を更新します...

私が試すこと:

  try {

      $result = $db->prepare('SELECT user_id FROM map WHERE user_id=:user_id');
      $result->bindParam(':user_id', $user_id); 
      $result->execute();

    //echo $jsonTable;
    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }
           try {   
               if ($result==null) {
               $STH = $db->prepare("INSERT INTO map (json, user_id) VALUES (:json, :user_id)");

                $STH->bindParam(':json', $_POST['mapData']);
                $STH->bindParam(':user_id', $user_id);
                $STH->execute();
               } else {
                $STH = $db->prepare("UPDATE map SET json = :json WHERE user_id= :user_id");

                $STH->bindParam(':json', $_POST['mapData']);
                $STH->bindParam(':user_id', $user_id);
                $STH->execute(); 
               }
            } catch (PDOException $e) {
                echo $e->getMessage();
            }
            echo "<p>Data submitted successfully</p>";

        }


したがって、ここで確認しようとしているのはuser_idで、テーブルに存在を追加する必要があります。user_idがない場合は、準備されたuser_idが新しい場合はデータを挿入しますが、user_idがすでにテーブルにある場合は、そのレコードを更新します。 。

しかし、これは私にはうまくいきません、また私にエラーを与えませんか?

私はphpの初心者なので、些細な質問については申し訳ありません...ありがとう!

更新:
私も挿入しようとしていますが、user_idが重複している場合は、UPDATEを実行します。

        try {        
         $STH = $db->prepare("INSERT INTO map (user_id, json) VALUES (:user_id,:json)
on duplicate key update json=values(json)");


                $STH->bindParam(':json', $_POST['mapData']);
                $STH->bindParam(':user_id', $user_id);

                $STH->execute();

            } catch (PDOException $e) {
                echo $e->getMessage();
            }
            echo "<p>Data submitted successfully</p>";
    }
答え
一意性をチェックするには、一意のキーを使用して、dbによって一意性をチェックすることができます:http://dev.mysql.com/doc/refman/5.6/en/mysql-indexes.html

または、通常、IDはテーブルの主キーです。これは、一意性について心配する必要がないことを意味します。主キーは常に一意であり、DBがチェックします
関連記事

php - パック関数を使用した整数から4ビットのバイナリphp

php - Joomla:K2-preg_replaceを使用してメタ記述から中括弧を取り除く方法

php - 2つのテーブルを結合し、cakephpの3番目のコントローラーにデータを表示します

php - プロパティの代わりにゲッターに基づいてsymfonyコレクションを検証する

php - Yii変更をローカルマシンにキャッシュ

php - Wamp Serverが保存されているフォルダーから.pdfおよび.docxファイルをダウンロードするためのPHPコード

php - フォームから選択した複数のPHPエコーバック

php - 別のページとしてページに投稿する-Facebook API

php - 最初の行のみを表示する演算子間のMySQL

php - 特定の投稿からWordpressブログフィードを開始する