2015-02-18 1 views
0

У меня есть массив ниже, и мне нужно обновить базу данных в соответствии с этим. Это должно быть что-то вроде кода примера ниже, но я не знаю, как сделать это правильно:Обновление нескольких строк в базе данных на основе нескольких флажков и входов

UPDATE productPercent SET percent="$percent" WHERE 
store="$store" AND 
startDate>"$start_date" AND 
endDate<"$end_date" AND 
storeGroup="$storeGroup" AND 
productGroup="$product_group" AND 
productName LIKE '$search%' 

мне нужно проверить для каждого магазина, магазин группы продукции (если содержит слово) и группа продуктов, а затем update productPercent table. Процент, группа продуктов, группа магазинов, название продукта и хранилище находятся в разных таблицах, поэтому требуется какое-то внутреннее соединение. Мне нужны некоторые указания относительно этого, потому что я не знаю, как начать, спасибо.

Array 
(
    [percent] => 3 
    [store] => Array 
     (
      [0] => 36 
      [1] => 45 
      [2] => 56 
     ) 

    [start_date] => 2015-02-09 
    [end_date] => 2015-03-31 
    [storeGroup] => Array 
     (
      [0] => 2 
      [1] => 4 
     ) 

    [product_group] => Array 
     (
      [0] => 13 
      [1] => 31 
      [2] => 32 
     ) 

    [search] => iphone 
    [setPercent] => Submit 
) 

ОБНОВЛЕНО: модель данных - TABLENAME: колонны (соединенные таблицы)

магазин: идентификатор, имя, StartDate, EndDate
storeGroup: идентификатор, storeGroupID (в таблице storeGroupName: идентификатор , имя), storeID
товарGroup: id, продуктID (в таблице продуктName: id, имя), группаID (в таблице продуктGroupName: id, имя)
ProductName: идентификатор, имя
productPercent: идентификатор, ProductID, StoreID, процент

+0

Можете ли вы представить вашу модель данных, пожалуйста? – jdog

ответ

0
$pdoHandle = $this->getPDOHandle(); 
$searchword = 'iphone'; 
$sql = "UPDATE 
productPercent 
inner join store on productPercent.storeID=store.id 
inner join storeGroup on storeGroup.storeID=store.id 
inner join productGroup on productGroup.id=storeGroup.groupID 
inner join productName on productPercent.productID=productName.id and productGroup.productID=productName.id 

SET percent=:percent 
WHERE productName.name like :searchword"; 


$pdo->prepare($sql); 
$pdo->setAttribute('percent', floatval($percent/100)); 
$pdo->setAttribute('searchword', $searchword . '%'); 
+0

Спасибо. У меня мало вопросов, поскольку я не очень хорошо знаком с pdo. Что представляет собой первая строка кода? Потому что я получаю _Использую $ this, когда не в контексте объекта, и не путаюсь с этой строкой: 'inner join productGroup on productGroup.id = storeGroup.groupID', потому что storeGroup не имеет идентификатора groupID – jakob

Смежные вопросы