Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 如何在一个查询中插入一个表并在另一个表中更新?_Php_Mysql - Fatal编程技术网

Php 如何在一个查询中插入一个表并在另一个表中更新?

Php 如何在一个查询中插入一个表并在另一个表中更新?,php,mysql,Php,Mysql,我目前正在创建某种库存系统 我有master\u tbl在其中保存项目。在master\u tbl中,我有列剩余数量或剩余可用库存 我还有一个表issuement\u tbl,其中我将所有交易保存在issueringitems中。 此表中有已发放数量 我的问题是如何在更新master\u tbl.qty\u left的同时在issuement\u tbl中插入一行。(主控数量左-发行数量) 有可能吗?我认为最好的方法是使用存储过程。您可以在一个地方拥有一堆带有错误处理和ACID事务的SQL语句。

我目前正在创建某种库存系统

我有
master\u tbl
在其中保存项目。在
master\u tbl
中,我有列
剩余数量
或剩余可用库存

我还有一个表
issuement\u tbl
,其中我将所有交易保存在issueringitems中。 此表中有
已发放数量

我的问题是如何在更新
master\u tbl.qty\u left
的同时在
issuement\u tbl
中插入一行。(主控数量左-发行数量)


有可能吗?

我认为最好的方法是使用存储过程。您可以在一个地方拥有一堆带有错误处理和ACID事务的SQL语句。这是因为如果第一个查询执行,而第二个查询失败,则可能需要回滚事务。存储过程允许所有这些新奇但可靠的东西

您可以从这里开始:

以下是示例:

    <form method="post">
    QTY:<input type="text" name="qty_left"></input>
        <input type="submit" name="submit" value="update"></form>

   <?php
         ////////your config db
     $qty = $_POST['qty_left'];
     if(isset($_POST['submit']);
     $sql = mysql_query("insert into issuance_tbl (issued_qty) values (".$qty.") ");
     $sql1 = mysql_query("update master_table set qty_left= ".$qty."");
     ?>

数量:

我不完全相信‘如果有任何方法可以做这样的事情’: 您需要分步骤进行,如下所示:

$result = $this->db->insert($table);//Example function to insert inventory item
$insert_id = $this->db->insert_id();//Example function to get the id of inserted item
if($result)
$res = $this->db->update($id,$data,$table);//Example function to update data of quantity table

if(!$res)
{
$this->db->delete($insert_id,$table);s
$result = '-1';
}
return $result;

希望这有助于创建一个存储过程。在insert上使用触发器为什么不使用两个查询?因为我有一个表单,它接受用于发布的记录。该表中还包括“已发布数量”,我需要更新主数量。请看这个答案,也许它能帮助您,我是一名新手程序员,对存储过程一无所知(@ChocoMartin:internet上有数以百万计的关于存储过程的教程(MySQL也有一个——你确实读过手册,是吗?)。你应该认真阅读它们。然后我建议你花点时间来投资。这将真正帮助你在将来编写企业级应用程序。你会发现关于这个主题的数千个示例和教程。
UPDATE FROM
不推荐使用。我忘了删除FROM。无论如何,所有mysql_*都不推荐使用。你的更新查询将是b基于什么
where
条件?如果是主键或外键,则取决于需要从where条件更新的数据库。
$con = mysqli_connect($host, $user, $password, $database);
...
$issued_qty = '10'; //some value

$insert_query = "insert into issuance_table (issued_qty, ...) values ('$issued_qty', ... ) ;";    
$update_query = "update master_tbl set qty_left = (qty_left - ".$issued_qty.")  where ....";    
mysqli_multi_query($con, $insert_query.$update_query);