2014-03-31 27 views
0

我有一個函數,插入或更新數據庫中的值。如何綁定PHP準備並執行正確的語句?

我正在使用一個準備和執行語句,我想匹配我的函數ELSE-clause用於匹配準備好的語句。

在我的ELSE-clause中有一個更多的值(即$id),所以我不確定是否可以將它分配給execute數組。

function insert_value($item_name, $description, $supplier_code, $cost, $sell_price,$num_on_hand, $reorder_point, $back_order, $id=0) 
{ 

    $connection = db_connect(); 
    if($id==0) 
    { 
     $sql = 'INSERT INTO inventory (itemName, description, supplierCode, cost, price, onHand, reorderPoint, backOrder) 
       VALUES(:itemName, :description, :supplierCode, :cost, :price, :onHand, :reorderPoint, :backOrder);'; 
    } 
    else 
    { 
//NEED TO CHANGE THIS PART 
     $sql = "UPDATE inventory SET itemName='$item_name', description='$description', supplierCode='$supplier_code', 
      cost='$cost', price='$sell_price', onHand='$num_on_hand', reorderPoint='$reorder_point', backOrder='$back_order' 
      WHERE id='$id'"; 
    } 

    $prepare = $connection->prepare($sql); 
    $prepare->execute(array(     // AND THIS PART 
     ":itemName" => $item_name, 
     ":description" => $description, 
     ":supplierCode" => $supplier_code, 
     ":cost" => $cost, 
     ":price" => $sell_price, 
     ":onHand" => $num_on_hand, 
     ":reorderPoint" => $reorder_point, 
     ":backOrder" => $back_order, 
     )); 
} 
+0

把你的數組賦給一個變量,並在'else'中有'$ arr [「:id」] = $ id;'。 – Class

+0

可以請你更詳細地解釋我 – Nakib

回答

3

喜歡的東西:

function insert_value($item_name, $description, $supplier_code, $cost, $sell_price,$num_on_hand, $reorder_point, $back_order, $id=0){ 
    $connection = db_connect(); 
    $arr = array(":itemName" => $item_name, 
    ":description" => $description, 
    ":supplierCode" => $supplier_code, 
    ":cost" => $cost, 
    ":price" => $sell_price, 
    ":onHand" => $num_on_hand, 
    ":reorderPoint" => $reorder_point, 
    ":backOrder" => $back_order); 
    if($id==0){ 
     $sql = 'INSERT INTO inventory (itemName, description, supplierCode, cost, price, onHand, reorderPoint, backOrder) 
      VALUES(:itemName, :description, :supplierCode, :cost, :price, :onHand, :reorderPoint, :backOrder)'; 
    }else{ 
     $sql = "UPDATE inventory SET itemName=:itemName, description=:description, supplierCode=:supplierCode, 
     cost=:cost, price=:price, onHand=:onHand, reorderPoint=:reorderPoint, backOrder=:backOrder 
     WHERE id=:id"; 
     $arr[":id"] = $id; 
    } 

    $prepare = $connection->prepare($sql); 
    $prepare->execute($arr); 
} 

你也可能要檢查(如果你不這樣做的話),看看是否$connection是有效的,否則一旦它準備可能會出錯/執行。

+0

感謝那工作的人:) – Nakib