MYSQL:INSERT + ON DUPLICATE KEY UPDATE + SELECT in * one * prepared statement?

时间:2017-01-07 23:23:35

标签: mysql

我有以下两个准备好的语句来处理相同的数据库表(它们直接相互跟随),我想知道是否可以在一个语句中组合/合并它们。 (连接数据在$conn1中定义,session_id是该表的主键)

if($p1 = $conn1->prepare("INSERT INTO data1 (session_id) VALUES (?) ON DUPLICATE KEY UPDATE current_time = ?")) {
   $p1->bind_param("ss", $sessionid, $current_time);
   $p1->execute();
   $p1->close();
}

if($p2 = $conn1->prepare("SELECT xxx1, xxx2, xxx3 FROM data1 WHERE session_id = ?")) {
  $p2->bind_param("s", $sessionid);
  $p2->execute();
  $p2->bind_result($xxx1, $xxx2, $xxx3);
  $p2->fetch();
}

简单来说:初始化新会话时,我希望会话ID保存在data1表中。如果会话ID已存在,我希望更新current_time值,并从xxx1, xxx2, xxx3获取其他一些值(data1)。

我在上面写它的方式有效,但我更喜欢只有一个查询。从我读到的内容来看,如果它只是一个简单的INSERT后面跟SELECT,而不是ON DUPLICATE KEY UPDATE所涉及的话可能是可能的。但我很高兴知道它可以在一个查询中完成......

0 个答案:

没有答案