2015-06-14 48 views
0

對不起,模糊的標題,我不知道如何命名這個。 我需要從我的數據庫中刪除特定數量的特定值。我有一張桌子上有一些數字。它看起來像這樣PHP - 無法以我想要的方式刪除mysqli值

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,你的回答已經解決了我所有的問題。如果有人有什麼有趣的補充,我不介意。謝謝 !

這是要fullfiled這是爲了改變我的預期結果的部分代碼,如果有人需要它:

foreach($newAssoc as $key => $val) { 
    if(!empty($val)) { 

     $delete = mysqli_query($db, "DELETE FROM duplicates 
             WHERE numbers=$key 
             LIMIT $val"); 

    } 
+1

懶得搜索一個副本,但是使用'limit':https://dev.mysql.com/doc/refman/5.1/en/delete.html – Sumurai8

+1

你可以在答案中添加你的答案而不是評論?所以我可以選擇它作爲正確的答案?它修復了我所有的問題,非常感謝!我沒有想到它會那麼容易......謝謝! –

回答