【发布时间】:2013-08-02 01:35:34
【问题描述】:
- 'process' 是一种预处理语句的方法
- 'QId' & 'UnqId' 是子外键(只是一个索引)
我想使用子查询等实现mysql的一行语句(包括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'));
}
【问题讨论】:
-
如果你使用 mysql,你可以看看INSERT ON DUPLICATE KEY UPDATE 语法,这是一件很漂亮的事情!但请注意,如果您转移数据库,这只是 mysql
-
@Dale 但我怎样才能对三个查询进行一行查询?包括 SELECT 语句..
-
我不确定你是否可以,你会先运行你的选择然后根据我之前评论中的链接文档创建一个单行插入/更新
-
@Dale 在 sql 的子查询中有 'EXISTS' 的东西,但我不知道如何使用它..
-
这就是 google 对我朋友的意义,祝你好运
标签: php mysql prepared-statement insert-update