1

最初にDBからSELECTを実行し、次に何かが真である場合は、同じクエリ内でdbにINSERTを実行することは可能ですか?

これが私が今している方法です:

$sql = mysql_query("SELECT * FROM ".$prefix."_active_users WHERE userid = $playerid AND DATE(timestamp) = '$sel_tag'");
$row = mysql_fetch_assoc($sql);

if(!$row){
     mysql_query("INSERT INTO ".$prefix."_active_users (userid,timestamp) VALUES ($playerid,'$now')");
}

助けと感謝を願って;-)

4

2 に答える 2

4

質問を読んだときに、行が存在しない場合は INSERT したいと考えています。

だから、1つのクエリで...

mysql_query("

   INSERT INTO ".$prefix."_active_users (userid,timestamp)
   SELECT $playerid, '$now'
   FROM dual
   WHERE NOT EXISTS (SELECT * FROM ".$prefix."_active_users
             WHERE userid = $playerid AND   DATE(timestamp) = '$sel_tag')
    ");

これは他の回答とは異なりますINSERT.. SELECT

于 2013-01-17T08:15:32.680 に答える
1
insert into YourTable
(col1, col2, ...) 
select col1, col2, ... 
where not exists
    (
    select *
    from YourTabe
    where col1 = 42
    )
于 2013-01-17T08:14:09.010 に答える