2017-04-13 124 views
-1

数据未从数据库中删除。我可以添加和查看。无法使用php从数据库中删除

如果我把print_r($submissions);我可以看到我的数据。例如。 Array ([0] => 2)$count++;总是显示0,除非我将计数置于if语句之外。 echo "we got an error <br>";将显示与提交要删除的次数相同的次数。我测试了SQL查询并且工作正常。不知道现在去哪里,所以任何帮助表示赞赏。以下相关代码:

型号:

function deleteSubmission($conn,$submission_id) 
{ 
    $query = "DELETE FROM submissions WHERE submission_id=:submission_id"; 
    $stmt = $conn->prepare($query); 
     $stmt->bindValue(':submission_id',$submission_id); 
    $affected_rows = $stmt->execute(); 
    if($affected_rows==1) 
    { 
      //echo $affected_rows; 
      echo ($affected_rows) ? "true" : "false"; 
      echo " working "; 
     return true; 
    }else{ 
     //echo $affected_rows; 
      echo ($affected_rows) ? "true" : "false"; 
      echo " not working "; 
      return false; 
    } 
} 

控制器:

//they didn't submit the form 
if(!isset($_POST["deleteSubmissionsBtn"])) 
{ 
    header("Location:all-submissions-delete.php"); 
    exit; 
} 

$msg; 
//validate 
if(isset($_POST['submissions'])) 
{ 
    $submissions=$_POST['submissions']; 
    $conn=getConn(); 
    $count=0; 
    foreach ($submissions as $submission_id) 
    { 


     if(deleteSubmission($conn,$submission_id)) 
     { 
      $count++; 
     } 
       else{ 
        echo "we got an error <br>"; 
       } 

    } 
     print_r($submissions); 
     //echo $submission_id; 

    $conn=NULL; 
    $msg="Successfully deleted $count submissions"; 
}else{ 
    $msg="You need to select some submissions to delete"; 
} 

include("views/delete-feedback-view.php") 

?> 

查看:

echo "<form action='delete-submissions.php' method='POST'>"; 
foreach($allSubmissions as $submission) 
{ 
    echo "<div>"; 
    echo "<label>".$submission->title."</label>"; 
    echo "<input type='checkbox' value='".$submission->submission_id."' name='submissions[]'/>"; 
    echo "</div>"; 
} 
echo "<input type='submit' name='deleteSubmissionsBtn' value='delete submissions'>"; 
echo "</form>"; 
+2

执行查询后,检查执行错误(如果有)。 http://stackoverflow.com/questions/3999850/pdo-error-message – tilz0R

+0

还检查您的错误日志,如果有任何错误消息,可能会帮助你。 –

回答

0

感谢tilz0R和马格努斯·埃里克森。

我检查错误的建议,并得到Array ([0] => 00000 [1] => [2] =>)

我加入PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING,这是我发现我的答案....

PDOStatement对象::执行():SQLSTATE [42000]:语法错误或访问 冲突:1142 DELETE拒绝用户命令

我现在知道的问题,并能去修复它。再次感谢!