2012-07-13 87 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