Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于PHP中另一个表中的值更新sql表_Php_Mysql_Sql_Sql Update - Fatal编程技术网

基于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;