2015-02-12 5 views
1

Я пытаюсь увеличить строку, когда в элементе формы выбран элемент. Я знаю, что выполнение инструкции обновления делает то, что я прошу, но мой вопрос: если в форме есть 5 или 10 полей, которые пользователь может выбрать одновременно с одним и тем же элементом, как я могу обновить одну и ту же строку в одно и то же время для сохранения X числа раз, когда был выбран тот же элемент?Обновление одной и той же строки несколько раз

Моя таблица такова:

---materials--- (table name) 
id (int) 
mat_name (varchar) 
quantity (int) 
used (int) 
existence (int) 

Строка мне нужно поднять с «1», когда этот пункт был выбрать «используемый»

В таблице «материалы» есть как 100 элементов, как:

лук, груши, брокколи, и т.д ..

Таким образом, идея, когда какой-то элемент был выбран для любого в таблице, который будет увеличиваться в 1 в строке «используется» и с простой вычитанием показывает, сколько количества каждого элемента остается в наличии

мой запрос может выглядеть примерно так:

$statement = "UPDATE materials 
    SET used = :used, 
    WHERE mat_name = :mat_name"; 
$stmt = $conn->prepare($statement); 
$stmt->bindParam(':used', $_POST['used'], PDO::PARAM_INT); 
$stmt->bindParam(':mat_name', $_POST['mat_name'], PDO::PARAM_STR); 
$stmt->execute(); 

Спасибо за любую помощь!

+1

Возможно, вам понадобится 'SET used = used +: used', чтобы обновить значение' used'. Ваш текущий код игнорирует предыдущее значение 'used' и помещает в него новое значение. – axiac

ответ

2

Вы можете обновить строку в таблице, как это, указав нужные столбцы и новое значение для каждого. Обратите внимание, что вы можете ссылаться на предыдущее значение столбца, как это делает used = used+1.

UPDATE materials 
    SET used=used+1, 
     recent_user='personsName' 
WHERE mat_name = 'apple' 

Вы можете увеличивать число в несколько строк в одном UPDATE запросе, как это.

UPDATE materials 
    SET used = used + 1 
WHERE mat_name IN ('apple', 'banana', 'kumquat') 

Вы можете обновить несколько столбцов в нескольких строках. Просто дайте список столбцов для обновления вместе со своими новыми значениями. Например,

UPDATE materials 
    SET used=used+1, 
     recent_user='personsName' 
WHERE mat_name IN ('apple', 'banana', 'kumquat') 
+0

Итак, если у формы есть 10 полей и 5 из них выбраны для лука, четыре поля для яблока и один для брокколи с этим предложением будут работать: 'ОБНОВЛЕНИЕ материалов SET used = used + 1 WHERE mat_name =: mat_name ' – user3236149

+0

Если вы правильно поняли, вам нужно будет запустить этот запрос' UPDATE', который вы написали один раз для каждого обновляемого элемента, или использовать форму 'IN (item, item, item), которую я показал, или некоторые другое предложение WHERE, которое может соответствовать нескольким строкам. –

+0

Вы можете помочь мне, где у меня есть ошибка? 'try { $ tevent = '1'; \t $ sql = "UPDATE materials SET used = used + 1 WHERE mat_name IN (: pro,: pro1,: pro2,: pro3,: pro4,: pro5,: pro6,: pro7,: pro8,: pro9)"; $ stmt = $ conn-> prepare ($ sql); $ stmt-> bindParam (': used', $ tevent, PDO :: PARAM_INT); $ stmt-> bindParam (': mat_name', $ _POST ['mat_name'], PDO :: PARAM_STR); $ stmt-> execute(); \t echo ""; \t} catch (исключение исключения PDOException) { \t echo "Ошибка:".$ Exception-> GetMessage(); \t} 'и я попробовал с' $ stmt-> bindParam (': mat_name', $ _POST ['pro'], PDO :: PARAM_STR); 'до тех пор, пока про 9 не удастся – user3236149

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