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