我想运行一个向qa_votes
字段添加1的查询,然后检索该字段的结果值,以便我可以在前端显示它。
所以代码草案将是
$this->db->query("
UPDATE qa
SET qa_votes = qa_votes +1
WHERE qa_id = $question_id;
");
接着是
$query = $this->db->query("
SELECT qa_id, qa_votes
FROM qa
WHERE qa_id = $question_id;
");
有没有办法将这两个组合成一个查询?
答案 0 :(得分:7)
简短回答:不。
长答案:没有开箱即用的命令。 UPDATE
命令不提供此功能。但是,您可以编写一个更新的Stored Procedure,然后将结果带回来。
答案 1 :(得分:1)
是。您可以使用LAST_INSERT_ID
如果expr作为LAST_INSERT_ID()的参数给出,则该函数返回该参数的值,并将其记为LAST_INSERT_ID()返回的下一个值
所以你可以这样做:
$this->db->query("
UPDATE qa
SET qa_votes = LAST_INSERT_ID(qa_votes +1)
WHERE qa_id = $question_id;
");
其次是
$query = $this->db->query("SELECT LAST_INSERT_ID()");
您使用的MySQL API可能有一个快捷方式来检索最后一个(例如PHP中的mysql_insert_id())。
答案 2 :(得分:0)
只需将它们组合成一个SQL字符串吗?
$query = $this->db->query("
UPDATE qa
SET qa_votes = qa_votes +1
WHERE qa_id = $question_id;
SELECT qa_id, qa_votes
FROM qa
WHERE qa_id = $question_id;
");