在一个SQL查询中更新多个表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在一个SQL查询中更新多个表相关的知识,希望对你有一定的参考价值。
我已经做了一些研究,并发现通过一个查询不可能做到,但可以通过例如事务完成。但我无法使SQL查询正常工作。如果我逐一使用这些陈述,那么他们的工作一切顺利。
我该怎么办?
目标是使用一个表单中的信息更新两个表。
$query = "
START TRANSACTION;
UPDATE projects
SET
projects.project_name = '".$mysqli->real_escape_string($_POST['project_name'])."',
projects.project_group = '".$mysqli->real_escape_string($_POST['project_group'])."',
projects.project_notes = '".$mysqli->real_escape_string($_POST['project_notes'])."',
projects.project_created = '".$mysqli->real_escape_string($_POST['project_created'])."',
projects.project_start = '".$mysqli->real_escape_string($_POST['project_start'])."',
projects.project_delivery = '".$mysqli->real_escape_string($_POST['project_delivery'])."',
projects.project_orderdetails = '".$mysqli->real_escape_string($_POST['project_orderdetails'])."',
projects.project_owner = '".$mysqli->real_escape_string($_POST['project_owner'])."'
where projects.project_id = '".$mysqli->real_escape_string($_REQUEST['id'])."';
INSERT INTO hours
hours.userhours_id = '".$mysqli->real_escape_string($_POST['project_owner'])."',
hours.projecthours_id = '".$mysqli->real_escape_string($_REQUEST['id'])."',
hours.user_hours = '".$mysqli->real_escape_string($_POST['user_hours'])."'
where projects.project_id = '".$mysqli->real_escape_string($_REQUEST['id'])."';
COMMIT;
";
答案
Mysqli
有处理交易的方法,例如http://php.net/manual/en/mysqli.begin-transaction.php。
代码可以是:
$mysqli->begin_tansaction();
$mysqli->query('query1');
$mysqli->query('query2');
$mysqli->commit();
以上是关于在一个SQL查询中更新多个表的主要内容,如果未能解决你的问题,请参考以下文章