2017-08-01 77 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 = ?"; 

不要猶豫,回來,如果它不解決您的問題。