我想创建一个API来将数据提交到数据库。主要功能是更新库存。当我在迷你吧中插入或更新行(表 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
您的query
看起来像这样
$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']);