2017-08-01 76 views
-2

我使用的CRUD删除方法,它为我的作品,但是当我用不同的数据库和表试了一下它口口声声说“提供了无效的参数为的foreach()”CRUD删除不工作了

这是我的“vacature-verwijderen.php”,你应该能够将其删除

  <div> 
      <table id="tabel"> 
       <thead> 
       <tr> 
        <th>Functie</th> 
        <th>Omschrijving</th> 
        <th>Salaris</th> 
       </tr> 
       </thead> 
       <tbody> 
       <?php 
       include 'database.php'; 
       $pdo = Database::connect(); 
       $sql = 'SELECT * FROM vacature ORDER BY id DESC'; 
       foreach ($pdo->query($sql) as $row) { 
         echo '<tr>'; 
         echo '<td>'. $row['functie'] . '</td>'; 
         echo '<td>'. $row['omschrijving'] . '</td>'; 
         echo '<td>'. $row['salaris'] . '</td>'; 
         echo '<td width=250>'; 
         echo '<a class="button " href="update.php?id='.$row['id'].'">Update</a>'; 
         echo ' '; 
         echo '<a class="button" href="delete.php?id='.$row['id'].'">Delete</a>'; 
         echo '</td>'; 
         echo '</tr>'; 
         } 
       Database::disconnect(); 
       ?> 
       </tbody> 
     </table> 
    </div> 
</div> 

,然后当你点击删除你去“delete.php”它看起来像这样

<?php 
require 'database.php'; 
$id = 0; 

if (!empty($_GET['id'])) { 
    $id = $_REQUEST['id']; 
} 

if (!empty($_POST)) { 
    $id = $_POST['id']; 

    $pdo = Database::connect(); 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = "DELETE FROM vacature WHERE id = ?"; 
    $q = $pdo->prepare($sql); 
    $q->execute(array($id)); 
    Database::disconnect(); 
    header("Location: vacature-verwijderen.php"); 

} 
?> 

我不Ť知道什么是错误的,因为它使用的工作,也是我的数据库表看起来像这样

screen

+2

请查找错误信息。从你的屏幕截图:你想删除* id *。但没有列名* id * – BenRoob

+0

@ BenRoob我的上帝,我很抱歉,我实际上不知道它是什么,但就是这样。非常感谢 – Melissa

回答

0
foreach ($pdo->query($sql) as $row) { 

那什么是错的。 $pdo->query($sql)已经返回您的$row

使用,而代替它做了查询,并返回新行,只要有数据获取:

while ($row = $pdo->query($sql)) { 

另外:

$sql = "DELETE FROM vacature WHERE id = ?"; 

您提供没有按表不包含任何名为的字段,尽管有一个名为vacature_id。你可能想改变这种状况太:

$sql = "DELETE FROM vacature WHERE vacature_id = ?"; 

不要犹豫,回来,如果它不解决您的问题。