我正在尝试简化具有多个检查的代码..以下是我的代码 -
$query2 = "SELECT * FROM sample.temp";
$rslt = $dbo->query($query2);
if($rslt->rowCount() > 0)
{
foreach($rslt as $item)
{
$id = $item['entry_id'];
$Qty = $item['Qty'];
$group_ID = $item['group_ID'];
$component = $item['component'];
$vendor_ID = $item['vendor_ID'];
$stmt = $dbo->prepare("SELECT Qty FROM sample.temp WHERE vendor_ID=$vendor_ID AND component='$component' LIMIT 1");
if ($stmt->execute(array($_GET['Qty'])))
{
while ($row = $stmt->fetch(PDO::FETCH_OBJ))
{
$Q = $row->Qty;
}
}
$query4 = "UPDATE sample.stock SET Qty=(Qty+$Q) WHERE stock_ID=$vendor_ID AND component='$component'";//updating single existing entries
if ($dbo->query($query4))
{echo "Production updated !";}
else {echo "Production not updated!";}
$stm = $dbo->prepare("SELECT Qty FROM sample.temp WHERE vendor_ID=$vendor_ID AND component!='$component' LIMIT 1");
if ($stm->execute(array($_GET['Qty'])))
{
while ($row = $stm->fetch(PDO::FETCH_OBJ))
{
$Qt = $row->Qty;
}
$query5 = "INSERT INTO sample.stock (stock_ID, component, Qty) VALUES ($vendor_ID, '$component', $Qt)";//inserting new entry
if ($dbo->query($query5))
{echo "Production updated !";}
else {echo "Production not updated!";}
$st = $dbo->prepare("SELECT Qty FROM sample.temp WHERE vendor_ID!=$vendor_ID AND component='$component' LIMIT 1");
if ($st->execute(array($_GET['Qty'])))
{
while ($row = $st->fetch(PDO::FETCH_OBJ))
{
$Qtt = $row->Qty;
}
$query6 = "INSERT INTO sample.stock (stock_ID, component, Qty) VALUES ($vendor_ID, '$component', $Qtt)";//inserting new entry
if ($dbo->query($query6))
{echo "Production updated !";}
else {echo "Production not updated!";}
}
}
有什么方法可以减少此代码或更改条件的检查方式? 如果我可以在所有三个选择语句中使用 if语句,那就太棒了!
首先,我选择一个临时表,我可以根据3次检查将数据传输到库存表中 -
如果库存表具有与临时表中相同的stock_ID和组件,则更新库存表中的现有值
如果没有与该stock_ID相对应的组件,则在库存表中插入新条目
在库存表中插入新条目(如果它具有该组件但与库存表中的任何stock_ID不对应)
注意 - 临时表中的vendor_ID与库存表中的stock_ID相同。