English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Grundlagenanleitung

PHP Fortgeschrittene Anleitung

PHP & MySQL

PHP Referenzhandbuch

PHP MySQL Hinzufügen, Löschen, Ändern, Abfragen (CRUD)

In diesem Tutorial werden Sie lernen, wie man mit PHP und MySQL CRUD-Anwendungen erstellt.

Was ist CRUD

CRUD istC Create,R Read,U pdate undD E ist das Akronym für elete. CRUD-Operationen sind grundlegende Datenoperationen in der Datenbank. In den vorangegangenen Kapiteln haben wir bereits gelernt, wie man die Operationen Create (d.h. Einfügen), Read (d.h. Auswählen), Update und Delete ausführt. In diesem Tutorial werden wir eine einfache PHP-Anwendung erstellen, um alle diese Operationen an einer Stelle auf einer MySQL-Datenbanktabelle auszuführen.

Gut, lassen Sie uns mit dem Erstellen der Tabelle beginnen. Wir werden diese Tabelle in allen Beispielen verwenden.

Datenbanktabelle erstellen

Führen Sie den folgenden SQL-Befehl aus, um in der MySQL-Datenbank eine Tabelle mit dem Namenemployees Tabelle. Wir werden diese Tabelle in allen zukünftigen Aktionen verwenden.

CREATE TABLE employees (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    address VARCHAR(255) NOT NULL,
    salary INT(10) NOT NULL
);

Erstellen Sie die Konfigurationsdatei

Nachdem wir die Tabelle erstellt haben, müssen wir ein PHP-Skript erstellen, um eine Verbindung zum MySQL-Datenbankserver herzustellen. Lassen Sie uns eine Datei namens “config.php” erstellen und den folgenden Code hineinlegen.

Später werden wir die PHP-funktion require_once() verwenden, um diese Konfigurationsdatei in anderen Seiten zu includieren.

Online-Beispiel

<?php
/* Datenbankanmeldeinformationen. Angenommen, Sie führen MySQL aus
Server mit Standardeinstellungen (Benutzer “root”, kein Passwort) */
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'demo');
 
/* Versuche, eine Verbindung zum MySQL-Datenbankserver herzustellen. */
$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
 
//Verbindung überprüfen
if($link === false){
    die("Fehler: Verbindung nicht möglich. " . mysqli_connect_error());
}
?>

创建登录页面

首先,我们将为CRUD应用程序创建一个登录页面,该页面包含一个数据网格,其中显示了employee数据库表中的记录。它还为网格中显示的每个记录都有操作图标,您可以选择查看其详细信息,对其进行更新或删除。

我们还将在数据网格的顶部添加一个创建按钮,该按钮可用于在employee在表中创建新记录。创建一个名为“index.php”的文件,并将以下代码放入其中:

Online-Beispiel

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Dashboard</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
    <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.js"></script>
    <style type="text/css">
        .wrapper{
            width: 650px;
            margin: 0 auto;
        }
        .page-header h2{
            margin-top: 0;
        }
        table tr td:last-child a{
            margin-right: 15px;
        }
    </style>
    <script type="text/javascript">
        $(document).ready(function(){
            $('[data-toggle="tooltip"]').tooltip();   
        });
    </script>
</head>
<body>
    <div class="wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-12">
                    <div class="page-header clearfix">
                        <h2 class="pull-left">Mitarbeiterdetails</h2>
                        <a href="create.php" class="btn btn-success pull-right">Neuen Mitarbeiter hinzufügen</a>
                    </div>
                    <?php
                    //Einschließen der Konfigurationsdatei
                    require_once "config.php";
                    
                    //Versuchen, die Auswahlabfrage auszuführen
                    $sql = "SELECT * FROM employees";
                    if($result = mysqli_query($link, $sql)){
                        if(mysqli_num_rows($result) > 0){
                            echo "<table class='table table-bordered table-striped'>";
                                echo "<thead>";
                                    echo "<tr>";
                                        echo "<th>#</th>";
                                        echo "<th>Name</th>";
                                        echo "<th>Adresse</th>";
                                        echo "<th>Gehalt</th>";
                                        echo "<th>Aktion</th>";
                                    echo "</tr>";
                                echo "</thead>";
                                echo "<tbody>";
                                while($row = mysqli_fetch_array($result)){
                                    echo "<tr>";
                                        echo "<td>" . $row['id'] . "</td>";
                                        echo "<td>" . $row['name'] . "</td>";
                                        echo "<td>" . $row['address'] . "</td>";
                                        echo "<td>" . $row['salary'] . "</td>";
                                        echo "<td>";
                                            echo "<a href='read.php?id=%. $row['id'] ."' title='Eintrag anzeigen' data-toggle='tooltip'><span class='glyphicon glyphicon'-eye-open"></span></a>";
                                            echo "<a href='update.php?id=%. $row['id'] ."' title='Eintrag aktualisieren' data-toggle='tooltip'><span class='glyphicon glyphicon'-pencil"></span></a>";
                                            echo "<a href='delete.php?id=%. $row['id'] ."' title='Löschen von Einträgen' data-toggle='tooltip'><span class='glyphicon glyphicon'-trash'></span></a>";
                                        echo "</td>";
                                    echo "</tr>";
                                }
                                echo "</tbody>";                            
                            echo "</table>";
                            // Freie Ergebnisgruppe freigeben
                            mysqli_free_result($result);
                        } else{
                            echo "<p class='lead'><em>No records were found.</em></p>";
                        }
                    } else{
                        echo "Fehler: Es konnte $sql nicht ausgeführt werden. " . mysqli_error($link);
                    }
 
                    //Verbindungsbeenden
                    mysqli_close($link);
                    ?>
                </div>
            </div>        
        </div>
    </div>
</body>
</html>

inemployeesNachdem einige Einträge in die Tabelle eingefügt wurden, könnte die Login-Seite oder das CRUD-Datenraster wie im folgenden Bild aussehen:

Tipp:Wir haben das Bootstrap-Framework verwendet, um schnell und schön das CRUD-Anwendungslayout zu erstellen. Bootstrap ist das beliebteste und leistungsstärkste Frontend-Framework, das für schnelleren und einfacheren Web-Entwicklung verwendet wird.

Erstellungseintragseite

In diesem Abschnitt werden wir die Erstellungsseite der CRUD-Anwendung aufbauen.C Erstellungsfunktion.

Lassen Sie uns eine Datei namens "create.php" erstellen und den folgenden Code hineinlegen. Sie erstellt ein Web-Formular, das zuremployeeEintrag in die Tabelle eingefügt.

Online-Beispiel

<?php
//Die Konfigurationsdatei wird eingebunden.
require_once "config.php";
 
//Variablen definieren und mit leeren Werten initialisieren
$name = $address = $salary = "";
$name_err = $address_err = $salary_err = "";
 
//Beim Absenden des Formulars die Formulardaten verarbeiten
if($_SERVER["REQUEST_METHOD"] == "POST"){
    // Name validieren
    $input_name = trim($_POST["name"]);
    if(empty($input_name)){
        $name_err = "Bitte geben Sie einen Namen ein.";
    wenn (!filter_var($input_name, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
        $name_err = "Bitte geben Sie einen gültigen Namen ein.";
    } else{
        $name = $input_name;
    }
    
    //Adresse überprüfen
    $input_address = trim($_POST["address"]);
    if(empty($input_address)){
        $address_err = "Bitte geben Sie eine Adresse ein.";     
    } else{
        $address = $input_address;
    }
    
    //Gehalt überprüfen
    $input_salary = trim($_POST["salary"]);
    if(empty($input_salary)){
        $salary_err = "Bitte geben Sie das Gehaltskonto ein.";     
    } elseif(!ctype_digit($input_salary)){
        $salary_err = "Bitte geben Sie eine positive Ganzzahl ein.";
    } else{
        $salary = $input_salary;
    }
    
    //Überprüfen Sie vor der Datenbank-Eintragung auf Eingabefehler
    if(empty($name_err) && empty($address_err) && empty($salary_err)){
        //Vorbereitete INSERT-Anweisung
        $sql = "INSERT INTO employees (name, address, salary) VALUES (?, ?, ?)";
         
        if($stmt = mysqli_prepare($link, $sql)){
            //Die Variable wird als Parameter an das vorbereitete Statement gebunden.
            mysqli_stmt_bind_param($stmt, "sss", $param_name, $param_address, $param_salary);
            
            // Setze Parameter
            $param_name = $name;
            $param_address = $address;
            $param_salary = $salary;
            
            // Versuch, die vorbereitete Anweisung auszuführen
            if(mysqli_stmt_execute($stmt)){
                //Das Record wurde erfolgreich erstellt. Umgeleitet zur Login-Seite
                header("location: index.php");
                exit();
            } else{
                echo "Ein Problem ist aufgetreten. Bitte versuchen Sie es später noch einmal.";
            }
        }
         
        // Statement schließen
        mysqli_stmt_close($stmt);
    }
    
    //Verbindungsbeenden
    mysqli_close($link);
}
?>
 
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    Create Record</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
    <style type="text/css">
        .wrapper{
            width: 500px;
            margin: 0 auto;
        }
    </style>
</head>
    <div class="wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-12">
                    <div class="page-header">
                        <h2>Erstelle Eintrag</h2>
                    </div>
                    <p>Füllen Sie dieses Formular aus und senden Sie es, um das Mitarbeiterrecord in die Datenbank hinzuzufügen.</p>
                    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
                        <div class="form-group <?php echo (!empty($name_err)) ? 'has-error' : ''; ?>">
                            <label>Name</label>
                            <input type="text" name="name" class="form-control" value="<?php echo $name; ?>">
                            <span class="help-block"><?php echo $name_err;?>"/span>
                        </div>
                        <div class="form-group <?php echo (!empty($address_err)) ? 'has-error' : ''; ?>">
                            label>Address</label>
                            <textarea name="address" class="form-control/textarea>
                            <span class="help-block"><?php echo $address_err;?></span>
                        </div>
                        <div class="form-group <?php echo (!empty($salary_err)) ? 'has-error' : ''; ?>">
                            <label>Salary</label>
                            <input type="text" name="salary" class="form-control" value="<?php echo $salary; ?>">
                            <span class="help-block"><?php echo $salary_err;?></span>
                        </div>
                        <input type="submit" class="btn btn-primary" value="Submit">
                        <a href="index.php" class="btn btn-default">Abbrechen</a>
                    </form>
                </div>
            </div>        
        </div>
    </div>
</html>

Der gleiche "create.php"-Datei zeigt das HTML-Formular an und verarbeitet gesendete Formulardaten. Bevor die Daten gespeichert werden, führt sie auch grundlegende Validierung der Benutzereingaben durch.

Erstellen Sie die Leseseite

Jetzt ist es an der Zeit, die CRUD-Anwendung zu bauenR Lesefunktion.

Lassen Sie uns eine Datei namens "read.php" erstellen und den folgenden Code hineinlegen. Er wird basierend aufMitarbeiterid-Attribut aus der Tabelle employees abrufen, um Einträge zu检索.

Online-Beispiel

<?php
// Überprüfen Sie vor der Weiterverarbeitung, ob der id-Parameter vorhanden ist
if(isset($_GET["id"]) && !empty(trim($_GET["id"]))){
    //Einschließen der Konfigurationsdatei
    require_once "config.php";
    
    //SELECT-Anweisung
    $sql = "SELECT * FROM employees WHERE id = ?";
    
    if($stmt = mysqli_prepare($link, $sql)){
        //Die Variable wird als Parameter an das vorbereitete Statement gebunden.
        mysqli_stmt_bind_param($stmt, "i", $param_id);
        
        //设置参数
        $param_id = trim($_GET["id"]);
        
        //Versuchen Sie, ein vorbereitetes Statement auszuführen
        if(mysqli_stmt_execute($stmt)){
            $result = mysqli_stmt_get_result($stmt);
    
            if(mysqli_num_rows($result) == 1){
                /* 提取结果行作为关联数组。由于结果集仅包含一行,因此我们不需要使用while循环*/
                $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
                
                //检索单个字段值
                $name = $row["name"];
                $address = $row["address"];
                $salary = $row["salary"];
            } else{
                //Die URL enthält keinen gültigen id-Parameter. Leiten Sie auf die Fehlerseite um
                header("location: error.php");
                exit();
            }
            
        } else{
            echo "Ach! Es ist etwas schiefgelaufen. Bitte versuchen Sie es später noch einmal.";
        }
    }
     
    // Statement schließen
    mysqli_stmt_close($stmt);
    
    //Verbindungsbeenden
    mysqli_close($link);
} else{
    //Die URL enthält keinen id-Parameter. Weiterleitung zur Fehlerseite
    header("location: error.php");
    exit();
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Zeige Eintrag</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
    <style type="text/css">
        .wrapper{
            width: 500px;
            margin: 0 auto;
        }
    </style>
</head>
    <div class="wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-12">
                    <div class="page-header">
                        <h1>Zeige Eintrag</h1>
                    </div>
                    <div class="form-group">
                        <label>Name</label>
                        <p class="form-control-static"><?php echo $row["name"]; ?></p>
                    </div>
                    <div class="form-group">
                        label>Address</label>
                        <p class="form-control-static"><?php echo $row["address"]; ?></p>
                    </div>
                    <div class="form-group">
                        <label>Salary</label>
                        <p class="form-control-static"><?php echo $row["salary"]; ?></p>
                    </div>
                    <p><a href="index.php" class="btn btn-primary">Zurück</a></p>
                </div>
            </div>        
        </div>
    </div>
</html>

Erstellen Sie die Aktualisierungsseite

Gleichzeitig können wir die UPDATE-Funktion unserer CRUD-Anwendung erstellen.

Lassen Sie uns eine Datei namens "update.php" erstellen und den folgenden Code hineinlegen. Er wird basierend aufMitarbeiteraktualisierenMitarbeiterBestehende Einträge in der Tabelle.

Online-Beispiel

<?php
//Einschließen der Konfigurationsdatei
require_once "config.php";
 
//Variablen definieren und mit leeren Werten initialisieren
$name = $address = $salary = "";
$name_err = $address_err = $salary_err = "";
 
//Beim Absenden des Formulars die Formulardaten verarbeiten
if(isset($_POST["id"]) && !empty($_POST["id"])){
    // Wert eines versteckten Eingabefeldes abrufen
    $id = $_POST["id"];
    
    // Name validieren
    $input_name = trim($_POST["name"]);
    if(empty($input_name)){
        $name_err = "Bitte geben Sie einen Namen ein.";
    wenn (!filter_var($input_name, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
        $name_err = "Bitte geben Sie einen gültigen Namen ein.";
    } else{
        $name = $input_name;
    }
    
    // Adresse validieren
    $input_address = trim($_POST["address"]);
    if(empty($input_address)){
        $address_err = "Bitte geben Sie eine Adresse ein.";     
    } else{
        $address = $input_address;
    }
    
    //Gehalt überprüfen
    $input_salary = trim($_POST["salary"]);
    if(empty($input_salary)){
        $salary_err = "Bitte geben Sie den Gehaltsbetrag ein.";     
    } elseif(!ctype_digit($input_salary)){
        $salary_err = "Bitte geben Sie einen positiven Ganzzahlwert ein.";
    } else{
        $salary = $input_salary;
    }
    
    //Überprüfen Sie vor der Datenbank-Insertion auf Eingabefehler
    if(empty($name_err) && empty($address_err) && empty($salary_err)){
        //UPDATE-Anweisung
        $sql = "UPDATE employees SET name=?, address=?, salary=? WHERE id=?";
         
        if($stmt = mysqli_prepare($link, $sql)){
            //Die Variable wird als Parameter an das vorbereitete Statement gebunden.
            mysqli_stmt_bind_param($stmt, "sssi", $param_name, $param_address, $param_salary, $param_id);
            
            //设置参数
            $param_name = $name;
            $param_address = $address;
            $param_salary = $salary;
            $param_id = $id;
            
            //Versuchen Sie, die vorbereitete Anweisung auszuführen
            if(mysqli_stmt_execute($stmt)){
                //Aktualisierung erfolgreich protokolliert. Umleitung zur Anmeldeseite
                header("location: index.php");
                exit();
            } else{
                echo "Es gibt ein Problem. Bitte versuchen Sie es später noch einmal.";
            }
        }
         
        // Statement schließen
        mysqli_stmt_close($stmt);
    }
    
    //Verbindungsbeenden
    mysqli_close($link);
} else{
    //Überprüfen Sie vor der Weiterverarbeitung, ob der id-Parameter vorhanden ist
    if(isset($_GET["id"]) && !empty(trim($_GET["id"]))){
        //URL-Parameter erhalten
        $id = trim($_GET["id"]);
        
        //SELECT-Anweisung
        $sql = "SELECT * FROM employees WHERE id = ?";
        if($stmt = mysqli_prepare($link, $sql)){
            //Die Variable wird als Parameter an das vorbereitete Statement gebunden.
            mysqli_stmt_bind_param($stmt, "i", $param_id);
            
            //设置参数
            $param_id = $id;
            
            //Versuchen Sie, die vorbereitete Anweisung auszuführen
            if(mysqli_stmt_execute($stmt)){
                $result = mysqli_stmt_get_result($stmt);
    
                if(mysqli_num_rows($result) == 1){
                    /* 提取结果行作为关联数组。由于结果集仅包含一行,因此我们不需要使用while循环 */
                    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
                    
                    //检索单个字段值
                    $name = $row["name"];
                    $address = $row["address"];
                    $salary = $row["salary"];
                } else{
                    //URL不包含有效的ID。重定向至错误页面
                    header("location: error.php");
                    exit();
                }
                
            } else{
                echo "Ach! Es ist etwas schiefgelaufen. Bitte versuchen Sie es später noch einmal.";
            }
        }
        
        // Statement schließen
        mysqli_stmt_close($stmt);
        
        //Verbindungsbeenden
        mysqli_close($link);
    } else{
        //Die URL enthält keinen id-Parameter. Weiterleitung zur Fehlerseite
        header("location: error.php");
        exit();
    }
}
?>
 
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Update Record</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
    <style type="text/css">
        .wrapper{
            width: 500px;
            margin: 0 auto;
        }
    </style>
</head>
    <div class="wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-12">
                    <div class="page-header">
                        <h2>更新记录</h2>
                    </div>
                    <p>请编辑输入值并提交以更新记录。</p>
                    <form action="<?php echo htmlspecialchars(basename($_SERVER['REQUEST_URI'])); ?>" method="post">
                        <div class="form-group <?php echo (!empty($name_err)) ? 'has-error' : ''; ?>">
                            <label>Name</label>
                            <input type="text" name="name" class="form-control" value="<?php echo $name; ?>">
                            <span class="help-block"><?php echo $name_err;?>"/span>
                        </div>
                        <div class="form-group <?php echo (!empty($address_err)) ? 'has-error' : ''; ?>">
                            label>Address</label>
                            <textarea name="address" class="form-control/textarea>
                            <span class="help-block"><?php echo $address_err;?></span>
                        </div>
                        <div class="form-group <?php echo (!empty($salary_err)) ? 'has-error' : ''; ?>">
                            <label>Salary</label>
                            <input type="text" name="salary" class="form-control" value="<?php echo $salary; ?>">
                            <span class="help-block"><?php echo $salary_err;?></span>
                        </div>
                        <input type="hidden" name="id" value="<?php echo $id; ?>"/>
                        <input type="submit" class="btn btn-primary" value="Submit">
                        <a href="index.php" class="btn btn-default">Abbrechen</a>
                    </form>
                </div>
            </div>        
        </div>
    </div>
</html>

Erstellen Sie die Löschseite

Schließlich werden wirdunsere CRUD-Anwendungsfunktion elete.

Lassen Sie uns eine Datei namens "delete.php" erstellen und den folgenden Code hineinlegen. Diese Datei wirdMitarbeiterDas id-Attribut vonMitarbeiterLöschen der bestehenden Einträge im Tisch.

Online-Beispiel

<?php
//Nach der Bestätigung wird der Löschvorgang ausgeführt.
if(isset($_POST["id"]) && !empty($_POST["id"])){
    //Die Konfigurationsdatei wird eingebunden.
    require_once "config.php";
    
    //DELETE-Anweisung
    $sql = "DELETE FROM employees WHERE id = ?";
    
    if($stmt = mysqli_prepare($link, $sql)){
        //Die Variable wird als Parameter an das vorbereitete Statement gebunden.
        mysqli_stmt_bind_param($stmt, "i", $param_id);
        
        // Setze Parameter
        $param_id = trim($_POST["id"]);
        
        //Versuchen Sie, die vorbereitete Anweisung auszuführen
        if(mysqli_stmt_execute($stmt)){
            //Das Löschen des Eintrags war erfolgreich. Weiterleitung zur Anmeldeseite
            header("location: index.php");
            exit();
        } else{
            echo "Ach! Es ist etwas schiefgelaufen. Bitte versuchen Sie es später noch einmal.";
        }
    }
     
    // Statement schließen
    mysqli_stmt_close($stmt);
    
    //Verbindungsbeenden
    mysqli_close($link);
} else{
    //Überprüfen Sie, ob der id-Parameter vorhanden ist
    if(empty(trim($_GET["id"]))){
        //Die URL enthält keinen id-Parameter. Weiterleitung zur Fehlerseite
        header("location: error.php");
        exit();
    }
}
?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="alert alert-danger fade in">
    <input type="hidden" name="id" value="<?php echo trim($_GET["id"]); ?>"/>
    <p>Sind Sie sicher, dass Sie diesen Eintrag löschen möchten?</p><br>
    <p>
    <input type="submit" value="Ja" class="btn btn-danger">
    <a href="index.php" class="btn btn-default">Nein</a>
</p>
</div>
</form>

Erstellen Sie eine Fehlerseite

Am Ende lassen Sie uns eine Datei "error.php" erstellen. Wenn die Anfrage ungültig ist, d.h. der URL-Query-String fehlt den id-Parameter oder dieser Parameter ist ungültig, wird diese Seite angezeigt.

<h1>Ungültige Anfrage</h1>
<div class="alert alert-danger fade in">
 <p>Entschuldigung, Ihre angeforderte Anfrage ist ungültig. Bitte <a href="index.php" class="alert-link">Zurück</a> Versuchen Sie es noch einmal.</p>
</div>

Nach einer langen Reise haben wir schließlich mit PHP und MySQL eine CRUD-Anwendung fertiggestellt.