2017-05-18 57 views
0

我想檢查我的應用程序以查看MySQL中的表是否包含外鍵。如果是這樣,我想刪除選項來刪除包含外鍵的表。這裏是我的代碼:使用PHP檢查數據庫中是否存在外鍵

<html> 
<head> 
    <link href="css/stylesheet.css" rel="stylesheet" type="text/css"/> 
</head> 
<body> 

    <?php 
     require_once 'autoloader.php'; 

     // cursusManager is verantwoordelijk voor alle person handeling op 
     // de database. 
     $cursusManager = new cursusmanager(); 
     // Aanname dat delete de enige action is op dit scherm 

     if(isset($_GET["action"]) && $_GET["action"] == "delete") { 
      // Aanname dat het id netjes word meegenomen! 
      $id = $_GET["id"]; 
      $cursusManager->delete($id); 
     } 

     // Haal alle cursussen uit de database om deze verderop te laten zien. 
     $cursussen = $cursusManager->getAll(); 
    ?> 

    <img src="images/logo.png" id="logo" /> 

    <h2>Cursussen</h2> 
    <!-- simpel gridje, 123 hatsaflats --> 
    <div class="grid"> 
     <div class="gridheader">Naam</div> 
     <div class="gridheader">Aantal jaar</div> 
     <div class="gridheader">Niveau</div> 
     <div class="gridheader gridaction"></div> 

     <?php 
      // loop door alle personen heen 
      // (in code bovenaan uit database gehaald) 
      foreach($cursussen as $cursus) { 
       echo "<div class='gridcontent'>$cursus->naam</div>"; 
       echo "<div class='gridcontent'>$cursus->aantaljaar</div>"; 
       echo "<div class='gridcontent'>$cursus->niveau</div>"; 
       echo "<div class='gridcontent gridaction'><a href='index.php?action=delete&id=$cursus->id'>delete</a></div>"; 
      } 

     ?> 
    </div> 
</body> 

這是我的PHP管理器的代碼:

<?php 
/* cursusmanager inherits van mastermanager. Op dit moment bevat de mastermanager 
* alleen nog een database verbinding. 
*/ 
class cursusmanager extends mastermanager { 
    public function getById($aId) { 
     $statement = $this->connection->prepare("SELECT * FROM cursus WHERE id = ?"); 
     $statement->bindValue(1, $aId); 

     $statement->execute(); 

     /* fetchobject haalt het eerste record op uit het statement. PHP 
     * maakt hier zelf een object van, dus het model person.php wordt 
     * hier nu niet gebruikt. fetchobject geeft null als er geen records 
     * zijn 
     */ 
     return $statement->fetchObject(); 
    } 

    public function getAll() { 
     $statement = $this->connection->prepare("SELECT * FROM cursus"); 
     $statement->execute(); 

     /* fetchAll(PDO::FETCH_OBJ) haalt ALLE records op uit het statement. PHP 
     * maakt hier zelf objecten van, fetchAll(PDO::FETCH_OBJ) geeft een lege array als 
     * er geen records zijn 
     */ 
     return $statement->fetchAll(PDO::FETCH_OBJ); 
    } 



    public function delete($aId) { 
     throw new Exception("DIT IS DUS NOG NIET GEMAAKT!"); 
    } 
} 

?> 

回答

0

您需要連接到信息方案,你可以找到所有關於primary key信息和foreign keys在這張表

SELECT * FROM information_schema.TABLE_CONSTRAINTS T; 

你需要是一個ROOT用戶訪問information_schema。

使用此表您可以找到表,db以及是否有外鍵。

相關問題