2017-05-18 17 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、および外部キーがあるかどうかを確認できます。

関連する問題