我如何使用mysql PDO语句在php中使用条件检查?

时间:2016-01-25 07:00:03

标签: php mysql if-statement pdo

我正在尝试简化具有多个检查的代码..以下是我的代码 -

$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次检查将数据传输到库存表中 -

  1. 如果库存表具有与临时表中相同的stock_ID和组件,则更新库存表中的现有值

  2. 如果没有与该stock_ID相对应的组件,则在库存表中插入新条目

  3. 在库存表中插入新条目(如果它具有该组件但与库存表中的任何stock_ID不对应)

  4. 注意 - 临时表中的vendor_ID与库存表中的stock_ID相同。

0 个答案:

没有答案