2013-02-03 47 views
0

如果有可能首先进行SELECT并且如果不是true,则可以使用mysqli在相同查询中插入数据库?使用mysqli在同一查询中进行SELECT和INSERT/UPDATE

这里是我怎么做我现在:

$sel_timestamp = mktime(0, 0, 0, date("n"), date("j")-$day, date("Y")); 
$sel_tag = date("Y-m-d",$sel_timestamp); 
$user = 1; 

if ($result = $mysqli->query("SELECT * FROM ".$prefix."_active_users WHERE userid = $user AND DATE(timestamp) = '$sel_tag'")){ 

    if($result->num_rows < 1){ 

     $insert = "INSERT INTO ".$prefix."_active_users (userid,timestamp) VALUES (?,?)"; 
     $stmt = $mysqli->stmt_init(); 

     if($stmt->prepare($insert)){ 
      $stmt->bind_param('is', $user,$sel_tag); 
      $stmt->execute(); 

      $stmt->close(); 
     } 
    } 
    $result->close(); 
} 

在我来说,我用2个查询,但有可能合并成一个呢?

在此先感谢!

+0

'$ prefix的表格模式“__active_users'。为什么你插入时间戳对用户ID? – SparKot

+0

这是用于统计...活跃的独特用户公关。天。 表模式:用户ID INT(11) NO MUL NULL 时间戳 时间戳上更新CURRENT_TIMESTAMP – Mansa

+0

NO CURRENT_TIMESTAMP 别扭......无法理解。 – SparKot

回答

0

如果你有(用户ID,时间戳)唯一的密钥,那么你可以使用

INSERT IGNORE INTO ".$prefix."_active_users (userid,timestamp) VALUES (?,?) 

忽视的是一个关键的词

但是,您可以留下您当前的代码不变。有2个查询也没有错。

+0

我想优化我的网站,我有很多问题,,,你的例子如何得到SELECT查询的rit? – Mansa

相关问题