使用PHP检查数据库中是否存在外键

时间:2017-05-18 08:35:32

标签: php mysql

我想检查一下我的应用程序,看看MySQL中的表是否包含外键。如果是这样,我想删除删除包含外键的表的选项。这是我的代码:

<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!");
    }
}

?>

1 个答案:

答案 0 :(得分:0)

您需要连接到信息方案,您可以在此表中找到有关data 1: Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) data 2: Array ( [0] => b [1] => c [2] => f [3] => g ) output 1: Array ( [0] => a [3] => d [4] => e ) outut 2: Array ( [2] => f [3] => g ) primary key的所有信息

foreign keys

您需要成为SELECT * FROM information_schema.TABLE_CONSTRAINTS T; 用户才能访问information_schema。

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