PHP - 无法以我想要的方式删除 mysqli 值


PHP - can't delete mysqli values in the way I want

很抱歉标题模棱两可,我不知道该如何命名。我需要从数据库中删除特定数量的特定值。我有一个表格,上面有一些数字。它看起来像这样

1,2(1),3,4,5(6),

6(3),7(2),8,9(4),10

括号中的数字表示在 mysqli 数据库中找到基数的次数。我的表单允许我选择多个重复号码以及要删除的号码的重复项。例如,我选择了:

2(

1),5(4),9(2)

这是给我这些值的代码,但它并不完美,因为我收到数据库中至少有一个重复项的所有数字,以及没有选择数字的空值和选择时的正常数字。

<input type="number" name="quantity[]" id="quantity" min="0" max='<?php echo "$count[$item]"?>' /> input type="hidden" name="hidden[]" id="hidden" value='<?php echo "$item" ?>' />

我的思考过程是,我需要构建代码,以便我确切地知道选择的数字。所以我想从我应该收到的 2 个值中创建一个关联数组。它可以工作,它给了我该信息,但我只是无法让它删除所选项目的次数,它会删除所选项目的所有现有重复项。

 $arr1 = array();
 $arr2 = array();
 $newAssoc = array();
 if( isset( $_POST['submit'] ) ) {
   $quantity = $_POST['quantity'];
   $hidden = $_POST['hidden'];
   foreach( $hidden as $var1 ) {
     $arr1[] = $var1;
   }
   foreach( $quantity as $var2 ) {
     $arr2[] = $var2;
   }
   $newAssoc = array_combine( $arr1, $arr2 );
   foreach( $newAssoc as $key => $val ) {
     if( !empty($val)) {
       $i = 1;
       while( $i <= $val ) {
         $delete = mysqli_query( $db, "DELETE FROM duplicates
                                        WHERE numbers=$key" );
          ++$i;
       }
    }
  }
}

我已经尝试了很多事情,但我有点腌制,因为没有任何效果,而且我没有想法。

预期结果: 我将重复一遍,我需要从数据库中删除特定数量的特定值。

很抱歉文本墙和可怕的代码/编码实践/编码逻辑,对于编码和堆栈溢出来说仍然有点新。

谢谢你的帮助 RiggsFolly,你的回答解决了我所有的问题。如果有人有什么有趣的东西要补充,我不介意。谢谢!

这是代码的一部分,以便

我的预期结果被完整归档,如果有人需要它:

  foreach( $newAssoc as $key => $val ) {
     if( !empty($val)) {
         $delete = mysqli_query( $db, "DELETE FROM duplicates
                                       WHERE numbers=$key
                                       LIMIT $val" );
  }

在单个表上,可以使用 limit 限制删除的行数。

您的查询看起来像 DELETE FROM table WHERE key=value LIMIT 10 .请参阅 mysql 的官方文档。