如果数据存在则更新else insert,使用子查询等的mysql

时间:2013-08-01 08:27:59

标签: php mysql prepared-statement insert-update

  • 'process'是预备陈述的方法
  • 'QId'& 'unqId'是子外键(只是一个索引)

我想使用子查询或其他方式使其成为 一行语句(包括3个查询)

$get = $call->process("SELECT UnqId FROM table1
                     WHERE QId = ? AND UnqId = ?", 
                     array($_SESSION['Q'], $_SESSION['U']));
if($get) //if table exists
{
$call->process("UPDATE table1 SET col3 = ?, col4 = UTC_TIMESTAMP() 
              WHERE QId = ? AND UnqId = ?", 
                  array('OK', $_SESSION['Q'], $_SESSION['U']));
}
else
{
$call->process("INSERT INTO table1 VALUES (?, ?, ?, UTC_TIMESTAMP(),
               NULL, NULL, NULL, NULL)", 
                  array($_SESSION['Q'], $_SESSION['U'], 'OK'));
}

2 个答案:

答案 0 :(得分:1)

查看ON DUPLICATE KEY UPDATE语法,在一个查询中执行此操作。并尝试下次搜索,例如。 “mysql update on duplicate”。

答案 1 :(得分:1)

您可以使用使用ON DUPLICATE KEY UPDATE

的查询
INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;