背景:我有一个创建者:
$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记录。
答案 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) . ")";
如果订购的数量比目录中剩余的数量多,该怎么办?