基于PHP中另一个表中的值更新sql表
有两个表格:基于PHP中另一个表中的值更新sql表,php,mysql,sql,sql-update,Php,Mysql,Sql,Sql Update,有两个表格: orders ____________________ order_id | Stat -------------------- 1 | waiting 2 | waiting 3 | waiting 第二张表: product ____________________ order_id | product_id --------------------- 1 | 53
orders
____________________
order_id | Stat
--------------------
1 | waiting
2 | waiting
3 | waiting
第二张表:
product
____________________
order_id | product_id
---------------------
1 | 53
2 | 54
3 | 54
order_id值在两个表中相同。如果product_id在product表中为'54',我想将Orders表中的Stat从'waiting'更新为'done'
我尝试了此代码,但没有成功:
mysql_query("UPDATE orders SET stat='done' FROM product WHERE product_id='54'");
将非常感谢您的帮助:)您需要使用“加入某些内容”作为
update orders
join product on product.order_id = orders.order_id
set
orders.Stat='done'
where product.product_id = '54'
您需要使用JOIN-something作为
update orders
join product on product.order_id = orders.order_id
set
orders.Stat='done'
where product.product_id = '54'
如果希望将此逻辑嵌入数据库中,可以使用下面的更新触发器(伪代码):
如果希望将此逻辑嵌入数据库中,可以使用下面的更新触发器(伪代码):
还可以使用order.Stat,因为它存在于order表中,所以用大写字母。@AbhikChakraborty:Brilliant。非常感谢,伙计:)还要使用order.Stat,因为它存在于order表中,所以要用大写字母。@AbhikChakraborty:太棒了。非常感谢,伙计:)请,请停止使用
mysql.*
扩展。它已弃用、发出通知、不安全、未维护,将来将被删除。使用mysqli.*
或PDO
代替感谢您的建议。你是说我应该这样使用它?mysqli_u查询,但您应该学习其他扩展,因为尽管乍一看mysqli_*
看起来很像mysql_*
,但它们不会转换为1对1:新扩展更复杂,功能更强大。请,请停止使用mysql_*
扩展。它已弃用、发出通知、不安全、未维护,将来将被删除。使用mysqli.*
或PDO
代替感谢您的建议。你是说我应该这样使用它?mysqli_u查询,但您应该了解其他扩展,因为尽管乍一看mysqli_*
看起来很像mysql_*
,但它们并不是一对一的转换:新的扩展稍微复杂一些,而且功能更强大。
CREATE TRIGGER upd_check BEFORE UPDATE ON product
FOR EACH ROW
BEGIN
IF NEW.product_id = 54 THEN
UPDATE orders SET Stat = 'done' WHERE order_id = NEW.order_id
END IF;
END;