php - 将一个表中的字段保存到 PHP 变量并在另一个查询中使用

标签 php mysql database api

我想创建一个 API 来将数据提交到数据库。主要功能是更新库存。当我在 minibar(表 1)中插入或更新行时,我需要更新 minibar_movements(表 2)中的移动。这是两个表:

table 1 minibar
___________________________________________________________
id    location_id    room_id    menu_item    last_quantity
___________________________________________________________
250   1111           310        Sprite       4

table 2 minibar_movements
________________________________________________
id     minibar_id     location_id     qty_added
________________________________________________
1      250            1111            2

仅当记录尚不存在时,API 才会在表 1 中创建记录。如果存在,只需更新它即可。同时,表 2 中也会创建或更新一条记录。我的问题是,当我在表 1 中执行查询时,我需要保存表 1 中的 id 并在表 2 中用作 minibar_id。只有在表 1 中执行的查询才能导致表 2 中的更新。以下是我的代码的一部分:

$query1 = "SELECT * FROM minibar";
$query2 = "UPDATE minibar SET 
          last_quantity='$last_quantity'
          WHERE location_id='$location_id' AND room_id='$location_id' AND menu_item='$menu_item'";
$query3 = "INSERT INTO minibar 
          (location_id,room_id,menu_item,last_quantity)
          VALUES('$location_id', '$room_id','$menu_item','$last_quantity')";

$result1 = mysql_query($query1) or die(mysql_error());
$rows = mysql_num_rows($result1);
if( $rows > 0) {
    while($row = mysql_fetch_assoc($result1)) {
        if($location_id==$row['location_id'] && $room_id==$row['location_id'] && $menu_item==$row['menu_item']) {
            // just update
            $result2 = mysql_query($query2) or die(mysql_error());
            //$minibar_id = mysql_result(result2,0,'minibar.id');
        }
        else {
            // insert new record
            $result3 = mysql_query($query3) or die(mysql_error());
           // $minibar_id = mysql_result(result2,0,'minibar.id');
        }
    }
}
else {
    $result4 = mysql_query($query3) or die(mysql_error());
   // $minibar_id = mysql_result(result2,0,'minibar.id');
}  

因为表2中的minivar_id与表1中的id相同。每次在表1中执行查询时都需要更新表中字段minibar_id == id的移动。那么如何在 PHP 中保存该值并在与表 2 相关的其他查询中使用呢?谢谢。

最佳答案

最简单的方法可能是在 while 循环中使用它

$query2 = $query2." AND minibar_id="$row['minibar_id']);

或者你可以使用sprintf() http://php.net/manual/en/function.sprintf.php

您的查询将如下所示

$query2 = "UPDATE minibar
           SET last_quantity='$last_quantity'
           WHERE location_id='$location_id' 
           AND room_id='$location_id' 
           AND menu_item='$menu_item' 
           AND minibar_id = '%s' ";

在 while 循环中使用

$query2 = sprintf($query2, $row['minibar_id']);

关于php - 将一个表中的字段保存到 PHP 变量并在另一个查询中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27851139/

相关文章:

sql - 在错误抛出的上下文中 oracle 调用和执行之间的区别

php - CURL - 错误代码 : 6 Couldn't resolve host 'http://www.yahoo.com' - XAMPP

php - 使用 13 位数字的 TCPDF 生成 PDF417 时出错

php - 我如何摆脱这个双重 mysql 连接中的重复项?

mysql相关查询

java - 线程中的异常 "main"org.hibernate.service.spi.ServiceException : Unable to create requested service Hibernate Error

php - 浏览器在 UTF-8 cakePHP 应用程序上检测到 ISO-8859-1 编码

php - 在 WordPress 用户配置文件中隐藏 WooCommerce 账单和运输字段

mysql - 将十六进制索引拆分为 n 个部分

php - symfony 和ratchet 在 null 上调用成员函数 get()