2012-07-13 58 views
0

(我認爲是)一個工作循環,通過迭代並得到正確的ID(通過的var_dump確認)我到目前爲止是的,但我的SQL查詢不拾取的ID爲DELETE鍵。實質上,SQL查詢正在刪除id =數組迭代的當前id值。使用多個複選框。 var dump確認id與上傳ID相匹配,但是我無法進行任何刪除操作。下面的代碼:的foreach PHP刪除對mysql數據庫

 function submit_delete() { 
     if(!is_null($_POST['delete']) && !is_null($_POST['checkbox'])) { //Check to see if a  delete command has been submitted. 
    //This will dump your checkbox array to your screen if the submit works. 
    //You can manually check to see if you're getting the correct array with values 
    // var_dump($_POST['checkbox']);//Comment this out once it's working. 
    $id_array = $_POST['checkbox']; 
    //var_dump($id_array); 
    deleteUploads($id_array); 

    } 
    else { 
    echo "Error: submit_delete called without valid checkbox delete.";//var_dump($_POST['checkbox']); 
    } 
} 


function deleteUploads ($id_array) { 
    if (count($id_array) <= 0) { echo "Error: No deletes in id_array!"; echo 'wtf'; } 
    //return; }//bail if its empty 
    require_once ('../mysqli_connect.php'); //Connect to the db 

    $delete_success = false; var_dump($delete_success); 
    foreach ($id_array as $id) { var_dump($id); 
    $remove = "DELETE FROM upload WHERE upload_id= $id";//AND `owner_id`=".$_SESSION['user_id']; 
    $result = mysqli_query ($dbc, $remove); // Run the query 
    // 
    ////$mysqli->query($sql) or die(mysqli_error($mysqli)); 
    if ($result) { $delete_success = true; var_dump($delete_success);} 
    mysqli_close($dbc); 
    } 



    if($delete_success == true) { echo 'done'; 
    header('Location: newwriter_profile.php'); 
    } else { 
    echo "Error: ".mysqli_error(); 
    } 
} 


//Test deleteUploads (remove once you know the function is working) 
//$test_ids = array(); 
//$test_ids[] = 5;//make sure this id is in the db 
//$test_ids[] = 7;//this one too 
submit_delete(); 
//deleteUploads($id_array);//should remove ids 10 and 9// 

mysqli_close($dbc); 
+0

不應該在關閉之前至少產生一次刪除操作? – V1GG3N 2012-07-13 12:13:39

回答

1

您需要從deleteUploads()功能刪除mysqli_close($dbc);聲明。 我也同意yhou應該接受人們的答案。你已經提出了9個問題,並且你沒有接受13個答案中的一個。這真的不公平。

編輯 我已經快速瀏覽了您的腳本並將其移動了一下。 這是否提供任何有用的信息?

<? 
$msgs[] = 'Log: Started'; 
require_once('../mysqli_connect.php'); 

function submit_delete() 
{ 
    global $msgs; 
    if(!is_null($_POST['delete']) && !is_null($_POST['checkbox'])) 
    { 
     $msgs[] = "Log: submit_delete called with valid checkbox delete."; 
     $id_array = $_POST['checkbox']; 
     deleteUploads($id_array); 
    }else{ 
     $msgs[] = "Error: submit_delete called without valid checkbox delete."; 
    } 
} 

function deleteUploads ($id_array) 
{ 
    global $msgs; 
    if (count($id_array) <= 0) 
    { 
     $msgs[] = "Error: No deletes in id_array!"; 
    }else{ 
     $msgs[] = "Log: Deletes in id_array!"; 
    } 

    $delete_success = false; 
    foreach ($id_array as $id) 
    { 
     $msgs[] = "Log: Processing id: ".$id; 
     $remove = "DELETE FROM upload WHERE upload_id = $id"; 
     $result = mysqli_query ($dbc, $remove); 
     if ($result) 
     { 
      $msgs[] = 'Log: delete success = true'; 
      header('Location: newwriter_profile.php'); 
     }else{ 
      $msgs[] = 'Error: '.mysqli_error(); 
     } 
    } 
} 

submit_delete(); 

if([email protected]_close($dbc)) 
{ 
    $msgs[] = 'Error: mysqli_close failed'; 
} 
echo implode('<br>',$msgs); 
?> 
+0

另外,在關閉連接之前,循環是否不應該至少運行一次DELETE? – V1GG3N 2012-07-13 14:25:32

+0

我剛剛證實,這並沒有解決問題,刪除mysqli_close後沒有發生刪除 – V1GG3N 2012-07-13 22:49:43