PHP基于另一个数组的键创建一个数组

时间:2018-11-03 23:52:59

标签: php mysql arrays

背景:我有一个创建者:

$order  = $_POST['order'];

每行内容只有一个值:

[0] => 1
[1] => 4
[2] => 5
[3] => 2
[4] => 2

我正在使用此更新数据库:

for ($i=0; $i<count($order); $i++)
{
$sql = "UPDATE catalog SET quantity=quantity - $order[$i]  WHERE item_number= $i +1";

$result = mysqli_query($connection,$sql) or
die("<b>Query Failed.</b><br>" . mysqli_error($connection));
}

但是我想使用SELECT来搜索更新的记录。当然,问题在于我没有直接的项目编号,因为我使用$ i +1来引用它。

如您所见,每个值的(array)key + 1等于item_number。所以我希望创建一个满足以下条件的数组:

for ($i=0; $i<count($order); $i++)
{ 
if ($order[$i] > 0)
{
$itemNum[$i] = 1;
} else {
$itemNum[$i] = 0;
}

我敢肯定我会考虑这个问题,但是我只需要能够建立一个WHERE语句,只显示刚刚更新的item_num记录。

1 个答案:

答案 0 :(得分:0)

创建一个包含要更新的所有item_numbers的数组。然后,选择那些item_numbers。

$updated = [];
for ($i=0; $i<count($order); $i++)
{
  if ($order[$i] > 0) {
    $updated[] = $i + 1;
    $sql = "UPDATE catalog SET quantity=quantity - $order[$i]  WHERE item_number= $i +1";
    $result = mysqli_query($connection,$sql) or
       die("<b>Query Failed.</b><br>" . mysqli_error($connection));
  }
}
$sql = "SELECT * FROM catalog WHERE item_number IN (" . implode(",", $updated) . ")";

如果订购的数量比目录中剩余的数量多,该怎么办?