2014-03-31 28 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