0

グループ名をデータベースに挿入しようとしています。それらはユーザーグループであるため、一度だけ挿入したいので、誤って再度挿入した場合は、既に存在するため拒否する必要があります。PDOステートメントも使用しています。

// groups
$db->query("CREATE TABLE IF NOT EXISTS groups ( ID INT NOT NULL AUTO_INCREMENT, 
                    name VARCHAR(200),
                    primary key (ID)
            )");        

// Fill tables

//Groups
$db = connectDatabase();    
$name = 'Administrator';
$query = $db->prepare("INSERT INTO groups (name) SELECT :name WHERE NOT EXISTS (SELECT * FROM groups WHERE name = :name)");
$query->bindParam(':name', $name);
$query->execute();

$name = 'Moderator';
$query = $db->prepare("INSERT INTO groups (name) SELECT :name WHERE NOT EXISTS (SELECT * FROM groups WHERE name = :name)");
$query->bindParam(':name', $name);
$query->execute();

何らかの理由で、テーブル グループに何も追加されません。誰でもこれで私を助けることができますか?

どうもありがとう

4

3 に答える 3

5

名前をUNIQにしてみませんか?

$db->query("CREATE TABLE IF NOT EXISTS groups ( ID INT NOT NULL AUTO_INCREMENT, 
                    name VARCHAR(200),
                    primary key (ID),
                    UNIQUE KEY `name` (`name`)
            )");        

次にINSERT IGNOREを作成します。

$db = connectDatabase();    
$name = 'Administrator';
$query = $db->prepare("INSERT IGNORE INTO groups (name) VALUES (:name)");
$query->bindParam(':name', $name);
$query->execute();
于 2013-04-22T11:25:04.923 に答える
-1

フォローしてみてください

If Not Exists(select * from groups where name=:name)
Begin
insert into groups(name) values (:name)
End
于 2013-04-22T11:20:38.243 に答える