我有以下两个准备好的语句来处理相同的数据库表(它们直接相互跟随),我想知道是否可以在一个语句中组合/合并它们。 (连接数据在$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
所涉及的话可能是可能的。但我很高兴知道它可以在一个查询中完成......