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

テーブルに挿入されたデータの重複セット

    次のサンプルをテストしましたが、重複は発生しませんでした:

    class Franchises
    {
        protected static function getDB()
        {
            $conn = NULL;
    
            try
            {
                $conn = new PDO("mysql:host=127.0.0.1;dbname=franchises_db", "dbuser", "dbpassword");
                $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            }
            catch(PDOException $e)
            {
                echo $e->getMessage();
                exit();
            }
            return $conn;
        } 
        public static function setLeadData($franchises)
        {
           try
           {
                $db = static::getDB();
    
                $sql = "INSERT INTO leads_franchises SET
                       franchise_id    = :franchise_id,
                       franchisor_id   = :franchisor_id,
                       franchise_name  = :franchise_name";
                $stmt = $db->prepare($sql);
    
                foreach($franchises as $franchise)
                {
                    $result = $stmt->execute([
                        ':franchise_id'   => $franchise['franchise_id'],
                        ':franchisor_id'  => $franchise['franchisor_id'],
                        ':franchise_name' => $franchise['franchise_name']
                    ]);
                }
    
                return $result;
            }
            catch(PDOException $e)
            {
                echo $e->getMessage();
                exit();
            }
        }
    }
    
    $vals = [
        [
            "franchise_id" => 3,
            "franchisor_id" => 3,
            "franchise_name" => "Fitness Freaks"
        ],
        [
            "franchise_id" => 4,
            "franchisor_id" => 3,
            "franchise_name" => "Gyms Galore"
        ]
    ];
    
    Franchises::setLeadData($vals);
    

    また、leads_franchisesテーブルの作成コードは次のとおりです。

    CREATE TABLE `leads_franchises` (
        `id` INT(11) NOT NULL AUTO_INCREMENT,
        `franchise_id` INT(11) NULL DEFAULT '0',
        `franchisor_id` INT(11) NULL DEFAULT '0',
        `franchise_name` VARCHAR(128) NULL DEFAULT '',
        PRIMARY KEY (`id`)
    )
    COLLATE='utf8_general_ci'
    ENGINE=InnoDB;
    



    1. INNERJOINを使用してテーブルから最新のタイムスタンプ行を取得します

    2. .netのWindowsサービスはtnsサービス名を解決できません

    3. asp.netコアOracle.DataAccessSystem.BadImageFormatException:ファイルまたはアセンブリOracle.DataAccessを読み込めませんでした

    4. クライアントにSQLServerデータベースを使用してアプリケーションを展開する方法