多次更新同一行

时间:2015-02-12 15:02:55

标签: mysql

我正在尝试在选择项目的表单中增加一行。我知道做一个更新语句会按照我的要求进行,但我的问题是:如果表单中有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 个答案:

答案 0 :(得分: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')