PHP: Datei DB-Dumper für MySQL/MariaDB

edit | delete

Autor: Ralf v.d.Mark

eingetragen: Donnerstag, 15. Dezember 2022 um 13:55 Uhr (50/2022 Kalenderwoche)

geändert: Mittwoch, 06. März 2024 um 14:05 Uhr (10/2024 Kalenderwoche)

Keywords: Statement SELECT INSERT UPDATE DELETE Anweisungen Datenbank Dumper mysql mariadb

Kategorien: DB: MySQL, PHP, DB: MariaDB,

Text:

Einfach den Inhalt des Quellcode-Feldes in eine PHP-Datei (z. B. dbDumper.php) kopieren.


Diese Datei sollte anschließend folgendes können (falls DB-User die Rechte hat):
- Ein SQL-Statement (SELECT, INSERT, UPDATE, DELETE) ausführen,
- eine Datenbank-Tabelle als MySQL-Dump mit Insert-Anweisungen anzeigen,
- eine Datenbank-Tabelle in verschiedenen Ausgabeformaten anzeigen,
- die dem User zugeordneten Datenbanken anzeigen,
- Views-Inhalte anzeigen
- und weitere Aktionen

Quellcode:  

<?php declare(strict_types=1);
/**
 * Diese Datei kann folgendes
 *  - Ein SQL-Statement (SELECT, INSERT, UPDATE, DELETE) ausführen,
 *  - eine Datenbank-Tabelle als MySQL-Dump mit Insert-Anweisungen anzeigen,
 *  - eine Datenbank-Tabelle in verschiedenen Ausgabeformaten anzeigen,
 *  - die dem User zugeordneten Datenbanken anzeigen
 *  - Views-Inhalte anzeigen
 *  - ...
 *
 * @name       Datei: dbDumper.php
 * @author     Ralf von der Mark (vdM) <ralf@vondy.de>
 * @copyright  2015-2024
 * @version    siehe "VERSION_DES_TOOLS"; GIT: NO
 */


const AUSGABE_MIT_HTMLHEAD = 0;//Bei 0 kein HTML-Head ausgeben
const STEUER_PARAMETR = 'index.php?navi=_db_edit_alles';//z.B. ?navi=dbDumper&amp;a=1 (nicht leer lassen!)
const ANZAHL_DER_MULTI_INSERTS = 30;//So viele werden zusammen gepackt bei INSERT/REPLACE

/** Wie der Name schon sagt, kann man hier steuern,
 *  ob der Dump "INSERT INTO" oder "REPLACE INTO" enthaelt. */
const COMAND_INSERT_OR_REPLACE = 'REPLACE';

/** START: die DB-Zugangsdaten drin! */
require_once $_SERVER['DOCUMENT_ROOT'].'/../config/_config.php';//Laden DB-Variablen:
    $datenbankName  = DB_NAME;
    $datenbankHost  = DB_SERVER;
    $datenbankUser  = DB_USERNAME;
    $datenbankPassw = DB_PASSWORD;
    $_SESSION['dbDump']['dbName'] = $datenbankName;
/** ENDE: Datenbank-Einstellungen */


const STYLE_DIV_UNIVERSAL = ' style="border: 1px dotted #BCC833; padding: 1em;"';

define('DATEI_NAME_SELBST', STEUER_PARAMETR);

/* #######################################################################
 * #######################################################################
 * ######### Bitte bei Veränderung die Version anpassen! #################
 * #######################################################################
 * ##################################################################### */
const BEZEICHNG_DES_TOOLS = 'Universal Datenbank-Tool von Ralf';
const VERSION_DES_TOOLS = 'Version 1.1.4 vom 06.03.2024';

/* #######################################################################
 * #######################################################################
 * ### Achtung: ProgrammCode ab hier nicht mehr veraendern! ##############
 * #######################################################################
 * ##################################################################### */

if (((!empty($_POST['new_db_host']) && $_POST['new_db_host'] != $datenbankHost)
        || (!empty($_POST['new_db_user']) && $_POST['new_db_user'] != $datenbankUser))
    && !empty($_POST['new_db_pw']) && !empty($_POST['new_database'])) {
    define('HINWEIS_DB_USER', 'Der DB-User wurde von *' . $datenbankUser . '* auf diesen '
        . 'gewechselt! (DB-Host *' . $datenbankHost . '*)');
    define('HINWEIS_DATABASE', 'Die Standard-DB wurde von *' . $datenbankName . '* auf diese '
        . 'gewechselt!');
    define('DATABASE_NAME', strip_tags(trim($_POST['new_database'])));
    define('DATABASE_HOST', strip_tags(trim($_POST['new_db_host'])));
    define('DATABASE_USER', strip_tags(trim($_POST['new_db_user'])));
    define('DATABASE_PASSWORD', strip_tags(trim($_POST['new_db_pw'])));
    define('FORM_HIDE_USER_SETTG',
           '<input type="hidden" name="new_database" value="' . DATABASE_NAME . '">
            <input type="hidden" name="new_db_host" value="' . DATABASE_HOST . '">
            <input type="hidden" name="new_db_user" value="' . DATABASE_USER . '">
            <input type="hidden" name="new_db_pw" value="' . DATABASE_PASSWORD . '">');

} elseif (!empty($datenbankName) && !empty($datenbankHost)
    && !empty($datenbankUser) && !empty($datenbankPassw)) {
    define('HINWEIS_DB_USER', 'DB-Host: *' . $datenbankHost . '*');
    define('HINWEIS_DATABASE', 'Die Standard-Datenbank wurde nicht verändert!');
    define('DATABASE_NAME', $datenbankName);
    define('DATABASE_HOST', $datenbankHost);
    define('DATABASE_USER', $datenbankUser);
    define('DATABASE_PASSWORD', $datenbankPassw);
    define('FORM_HIDE_USER_SETTG', '');

} else {
    define('HINWEIS_DB_USER', 'Kein DB-Infos vorhanden!');
    define('HINWEIS_DATABASE', 'Die Standard-Datenbank ist unbekannt!');
    define('DATABASE_NAME', 'unbekannt');
    define('DATABASE_HOST', 'unbekannt');
    define('DATABASE_USER', 'unbekannt');
    define('DATABASE_PASSWORD', 'unbekannt');
    define('FORM_HIDE_USER_SETTG', '');
    $_GET['changeUser'] = 1;
}//ENDE: else => if() Datenbank-User per Eingabe setzen!

/** @abstract DB-Verbindung */
function datenbankVerbinder($setNames = 'utf8')
{
    //Standard-MySQLi-Aufruf
    $db_link = mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD,
        DATABASE_NAME)
    or die('<br><br><br>
               <h2 style="color:#990000;">
                   ERROR! Die Anwendung kann keine Verbindung zur Datenbank herstellen!
                   <br>[HOST: ' . DATABASE_HOST . ', USER: ' . DATABASE_USER
        . ', MySQLi()]</h2>');

    if (!empty($setNames)) {
        //utf8 / latin1 / utf8mb4
        $textSetNames = 'SET NAMES "' . $setNames . '"';
        mysqli_query($db_link, $textSetNames);
    }//ENDE: if ()
    //mysqli_query($db_link, "SET character_set_results = NULL;");
    //mysqli_query($db_link, "SET character_set_client = 'utf8'");
    //mysqli_query($db_link, "SET character_set_connection = 'utf8'");
    //mysqli_query($db_link, "SET character_set_results = 'latin1'");

    return $db_link;
}//ENDE: function datenbankVerbinder()

$dbConnect = datenbankVerbinder();//Universal für alle Abfragen verbinden!

function mysqli_query_uni($sql_query, $zusatzNameKonstante = '')
{
    $dbConnect = datenbankVerbinder();
    $sql_query = trim($sql_query);
    /* Dynamischer-Kommentar: Ersten Schraegen (/) der beiden wegloeschen bzw. hinschreiben!
    echo '<br><pre>$sql_query: '.print_r($sql_query, true).'</pre><hr>';//*/
    $returnWert = mysqli_query($dbConnect, $sql_query);
    $mysqli_errno = mysqli_errno($dbConnect);

    /* Dynamischer-Kommentar: Ersten Schraegen (/) der beiden wegloeschen bzw. hinschreiben!
    echo '<br><strong>MySQL-Error(#'.$mysqli_errno.'): </strong>'.$mysqli_error.' <pre> '.htmlentities($sql_query, true).'</pre><hr>';//*/

    if ($mysqli_errno === 0 && $returnWert !== false) {
        if (!defined('MYSQL_NUM_ROWS' . $zusatzNameKonstante)) {
            if (in_array(needle: strtoupper(substr($sql_query, 0, 6)), haystack: ['UPDATE', 'INSERT', 'DELETE'])) {
                $mysqliNumRows = @mysqli_affected_rows($dbConnect);
            } else {
                //Wenn obriges nicht zutrifft, dann...
                $mysqliNumRows = @mysqli_num_rows($returnWert);
            }//ENDE: else ==> if (!empty()
            define('MYSQL_NUM_ROWS' . $zusatzNameKonstante, $mysqliNumRows);
        }//ENDE: if ()
        return $returnWert;
    }

    $mysqli_error = mysqli_error($dbConnect);
    define('MYSQL_ERROR_TXT' . $zusatzNameKonstante,
        $mysqli_error);
    define('MYSQL_ERROR_NR' . $zusatzNameKonstante,
        $mysqli_errno);
    if (!defined('MYSQL_ERROR_NR')) {
        define('MYSQL_ERROR_TXT', $mysqli_error);
        define('MYSQL_ERROR_NR', $mysqli_errno);
    }//ENDE: if ()
    return mysql_errno_to_array($zusatzNameKonstante);
}//ENDE: function mysqli_query_uni($sql_query){

function mysql_fetch_assoc_uni($sql_result)
{
    if ($sql_result != false) {
        return mysqli_fetch_assoc($sql_result);
    }
    return mysql_errno_to_array();
}//ENDE: function mysql_fetch_assoc_uni($sql_result)


/** Bereitet die Ausgabe der Error-Meldungen vor */
function mysql_errno_to_array($zusatzNameKonstante = '')
{
    $arr[$zusatzNameKonstante]
        = ['MySQL_Errno' => MYSQL_ERROR_NR,
        'MySQL_Error' => MYSQL_ERROR_TXT,
        'MySQL_Error_MeldgTxt' => 'MySQL-Error: (' . MYSQL_ERROR_NR . ') '
            . MYSQL_ERROR_TXT,
        'MySQL_Error_MeldgWrap70' => wordwrap('MySQL-Error: ('
            . MYSQL_ERROR_NR . ') '
            . MYSQL_ERROR_TXT,
            70)];
    return $arr;
}//ENDE: function mysql_errno_to_array()

if (defined('AUSGABE_MIT_HTMLHEAD') && AUSGABE_MIT_HTMLHEAD === 1) {
?><!DOCTYPE html>
<html lang="de">
<!-- (c)2009-<?php echo date('Y'); ?>, Ralf von der Mark, BLE, Bonn, Deutschland -->
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Universal-Dumper - Ralf B. von der Mark</title>
    <meta http-equiv="Content-Style-Type" content="text/css">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <meta name="generator" content="PHP">
    <meta name="description" content="Universal-Datenbank-Dumper">
    <?php
    }//ENDE: if (defined('AUSGABE_MIT_HTMLHEAD') && AUSGABE_MIT_HTMLHEAD === 1)
    ?>
    <style>
        table, td, th {
            border: 1px solid black;
            margin: 0;
            padding: 0;
        }

        td, th {
            padding: 2px;
            margin: 0;
        }

        th {
            background-color: #E7C157;
        }

        .zaehler {
            background-color: #efefef;
            cursor: help !important;
        }

        [data-description] {
            position: relative;
        }

        [data-description]:hover {
            cursor: progress;
        }

        [data-description]:focus:before,
        [data-description]:hover:before {
            content: attr(data-description);
            display: block;
            position: absolute;
            top: 1.2em;
            left: 1.2em;
            min-width: 10em; /* Neu von Ralf */
            max-width: 33em; /* geaendert von Ralf */
            border: .0625em solid #333;
            padding: .25em;
            color: #26569E;
            text-align: left; /* Neu von Ralf */
            z-index: 10; /* Neu von Ralf */
            font-size: 15px; /* Neu von Ralf */
            font-weight: bold; /* Neu von Ralf */

            -webkit-border-radius: .125em; /* Saf3-4, iOS 1-3.2, Android <e;1.6 */
            -moz-border-radius: .125em; /* FF1-3.6 */
            border-radius: .125em; /* Opera 10.5, IE9, Saf5, Chrome, FF4, iOS 4, Android 2.1+ */

            /* useful if you don't want a bg color from leaking outside the border: */
            -moz-background-clip: padding;
            -webkit-background-clip: padding-box;
            background-clip: padding-box;


            -webkit-box-shadow: 4px 4px 6px #aaa; /* Saf3-4, iOS 4.0.2 - 4.2, Android 2.3+ */
            -moz-box-shadow: 4px 4px 6px #aaa; /* FF3.5 - 3.6 */
            box-shadow: 4px 4px 6px #aaa; /* Opera 10.5, IE9, FF4+, Chrome 6+, iOS 5 */

            background-color: #eeeeee;
            background-image: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#aaaaaa)); /* Saf4+, Chrome */
            background-image: -webkit-linear-gradient(top, #eeeeee, #aaaaaa); /* Chrome 10+, Saf5.1+, iOS 5+ */
            background-image: -moz-linear-gradient(top, #eeeeee, #aaaaaa); /* FF3.6 */
            background-image: -ms-linear-gradient(top, #eeeeee, #aaaaaa); /* IE10 */
            background-image: -o-linear-gradient(top, #eeeeee, #aaaaaa); /* Opera 11.10+ */
            background-image: linear-gradient(top, #eeeeee, #aaaaaa);
        }
    </style>
    <?php
    if (defined('AUSGABE_MIT_HTMLHEAD') && AUSGABE_MIT_HTMLHEAD === 1) {
    ?>
</head>
<body><?php
}//ENDE: if (defined('AUSGABE_MIT_HTMLHEAD') && AUSGABE_MIT_HTMLHEAD === 1)

define('AUTOM_DUMPER_KONSTANTE_', 'Dummy! - Zur einfachen Schreibweise der Konstante!');
define('AUTOM_DUMPER_KONST_LEN_', 'Dummy! - Integer! Zur einfachen Schreibweise der Konstante!');
/**
 * Bei Nennung des Key-Namens aus POST/GET gibt die Funktion
 * als RETURN den Wert zurueck und
 * definiert jeden Wert aus POST/GET als Konstante
 * beginnend mit dem Namen "AUTOM_DUMPER_KONSTANTE_...".
 *
 * @param string $variablenName (Name des Key)
 * @param string $defaultWert
 * @param string $wertTyp ('INT' fuer Integer, Standard ist String)
 *                              HINWEIS: gibt bei INT keine Negativ-Werte zurueck!
 * @param bool $wertSchuetzn (Standardmaessig wird PHP und HTML entfernt)
 *
 * @return string (Wert des Array-Feldes)
 */
function gibWertAusPostOderGet4Dumper($variablenName,
                                      $defaultWert,
                                      $wertTyp = 'ALL',
                                      $wertSchuetzn = true)
{
    if (!empty($_POST[$variablenName])) {
        //Zuerst wird POST beachtet!
        $variablenInhalt = $_POST[$variablenName];
    } elseif (!empty($_GET[$variablenName])) {
        $variablenInhalt = $_GET[$variablenName];
    } else {
        //Wenn beides leer, dann Standardwert setzen.
        $variablenInhalt = $defaultWert;
    }//ENDE: else ==> if (!empty($_POST[$variablenName]))

    if (!empty($variablenInhalt) && is_string($variablenInhalt) && $wertSchuetzn === true) {
        $variablenInhalt = strip_tags($variablenInhalt);
    }//ENDE: if ($wertSchuetzn === true)
    if (!empty($variablenInhalt) && $wertTyp === 'INT') {
        $variablenInhalt = (int)$variablenInhalt;
        //Negativ-Werte rausfiltern:
        $variablenInhalt = ($variablenInhalt > 0 ?
            $variablenInhalt : $defaultWert);
    } elseif (!empty($variablenInhalt) && $wertTyp === 'TRIM') {
        $variablenInhalt = trim($variablenInhalt);
    } elseif (!empty($variablenInhalt) && $wertTyp === 'TIME') {
        $variablenInhalt = strtotime($variablenInhalt);
    }//ENDE: elseif () => if ()

    /** Variable ist so als automatische Konstante ueberall verfuegbar!
     *  Der Einfachheit halber verzichte ich auf Konstanten-Großschreibung. */
    if (!defined('AUTOM_DUMPER_KONSTANTE_' . $variablenName)) {
        define('AUTOM_DUMPER_KONSTANTE_' . $variablenName, $variablenInhalt);
    }//ENDE: if ()
    if (!defined('AUTOM_DUMPER_KONST_LEN_' . $variablenName)) {
        define('AUTOM_DUMPER_KONST_LEN_' . $variablenName,
            (!empty($variablenInhalt) ? (int)strlen((string)$variablenInhalt) : 0));
    }//ENDE: if ()

    return $variablenInhalt;
}//ENDE: function getWertAusPostOderGet()


$formMethod = gibWertAusPostOderGet4Dumper('formMethod', 'POST');
$dbTable = gibWertAusPostOderGet4Dumper('dbTable', null);
$dbTableAlt = gibWertAusPostOderGet4Dumper('dbTableAlt', $dbTable);
$database = gibWertAusPostOderGet4Dumper('database', null);
$ausgabeForm = gibWertAusPostOderGet4Dumper('ausgabeForm', null);
$insrtOrReplce = gibWertAusPostOderGet4Dumper('insrtOrReplce', 'INSERT');
$anzMultiInsrts = gibWertAusPostOderGet4Dumper('anzMultiInsrts', 15, 'INT');
$queryNeu = gibWertAusPostOderGet4Dumper('queryNeu', null);
if (!empty($_GET['changeUser'])) {
    $changeUser = 1;
} else {
    $changeUser = '';//Standardwert!
}//ENDE: else ==> if (!empty($_POST['changeUser']))

define('EISENBAHN_BILDCHN', '--' . PHP_EOL
    . '-- ---------------------------------------------------------------'
    . PHP_EOL . PHP_EOL . '                        Tuuuuut Tuuuuut!' . PHP_EOL . PHP_EOL
    . '*|¯¯¯¯¯¯¯¯¯¯| |¯¯¯¯¯¯¯¯¯¯| |¯¯¯¯¯¯¯¯¯¯|___.___ |¯¯¯|___¯/_,,' . PHP_EOL
    . '*|__________| |__________| |__________||______||__________|'
    . PHP_EOL . '* OO¯¯¯¯OO --- OO¯¯¯¯OO --- OO¯¯¯¯OO - O¯¯¯¯O - OO° °OOO' . PHP_EOL
    . '=================================================================' . PHP_EOL);

if (empty($changeUser)) {

    define('MYSQL_DB_VERSION', mysqli_get_server_info($dbConnect));
    define('MYSQL_DB_VERS_GROB', (int)MYSQL_DB_VERSION);

    define('SERVER_INFOS_KOMPAKT',
        '-- --------------------------------------------------'
        . PHP_EOL . '--' . PHP_EOL
        . '-- "' . BEZEICHNG_DES_TOOLS . '"'
        . PHP_EOL
        . '-- ' . VERSION_DES_TOOLS . ' [' . DATEI_NAME_SELBST . ']'
        . PHP_EOL . '--' . PHP_EOL
        . '-- Server-Name: ' . $_SERVER['SERVER_NAME']
        . PHP_EOL
        . '-- Serverzeit: ' . date('d.m.Y') . ' um ' . date('H:i') . ' Uhr'
        . PHP_EOL
        . '-- Server-Software: ' . $_SERVER['SERVER_SOFTWARE'] . ','
        . PHP_EOL
        . '-- PHP-Version: ' . PHP_VERSION
        . PHP_EOL . '--' . PHP_EOL
        . '-- Datenbank-Host: ' . DATABASE_HOST
        . PHP_EOL
        . '-- MySQL-Version: ' . MYSQL_DB_VERS_GROB . ' (' . MYSQL_DB_VERSION . ')'
        . (!empty($database) ?
            PHP_EOL . '-- Datenbank: "<a href="#submitZurueck"'
            . ' data-description="Datenbank wechseln ...">'
            . $database . '</a>"'
            : null)
        . PHP_EOL
        . '-- Datenbank-User: "<a href="' . DATEI_NAME_SELBST . '&amp;changeUser=1" '
        . ' onclick="return confirm(\'Wollen Sie wirklich den Benutzer wechseln?\')" '
        . ' data-description="Anderen Datenbank-Benutzer eingeben ...">' . DATABASE_USER . '</a>"'
        . PHP_EOL . '--' . PHP_EOL);
} else {
    define('SERVER_INFOS_KOMPAKT', null);
}//ENDE: else ==> if(empty($changeUser))

if (!empty($changeUser)) {
    echo '<h1 id="oben"><a href="' . DATEI_NAME_SELBST . '">' . BEZEICHNG_DES_TOOLS . '</a></h1>
        <h2>Geben Sie anderen User ein.</a></h2>
        <div style="border: 1px dotted #990000; padding: 1em;">
            <form action="' . DATEI_NAME_SELBST . '" method="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                <input type="hidden" name="formMethod" value="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                <input type="hidden" name="insrtOrReplce" value="' . AUTOM_DUMPER_KONSTANTE_insrtOrReplce . '">
                <input type="hidden" name="anzMultiInsrts" value="' . AUTOM_DUMPER_KONSTANTE_anzMultiInsrts . '">
                <label>Datenbank: <input type="text" name="new_database" value="' . DATABASE_NAME . '"></label>
                <br>
                <label>Host: <input type="text" name="new_db_host" value="' . DATABASE_HOST . '"></label>
                <br>
                <label>User: <input type="text" name="new_db_user" value="' . DATABASE_USER . '"></label>
                <br>
                <label>Passwort: <input type="password" name="new_db_pw" value="' . DATABASE_PASSWORD . '"></label>
                <br>
                <input type="submit" name="submitChangeUser" value="User wechseln">
            </form>
        </div>';

    echo '<br><br><div' . STYLE_DIV_UNIVERSAL . '>
            <pre style="display: inline;">' . SERVER_INFOS_KOMPAKT
        . EISENBAHN_BILDCHN . '</pre>
        </div>';

} elseif (empty($database)) {

    echo '<h1 id="oben"><a href="' . DATEI_NAME_SELBST . '">' . BEZEICHNG_DES_TOOLS . '</a></h1>';

    $query = '
        SHOW DATABASES;';
    $datenbanken = mysqli_query_uni($query, '_dbs');
    if (defined('MYSQL_ERROR_TXT_dbs')) {
        echo '<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">'
            . $datenbanken['_dbs']['MySQL_Error_MeldgTxt'] . '</h3>';
        exit('<h2>Fehler: Die Anwendung wurde beendet (Code 68h88s)!</h2>');
    }//ENDE: if ()

    $tabellenAnzahl = MYSQL_NUM_ROWS_dbs;//Wird gesetzt in "mysqli_query_uni()"

    if (empty($tabellenAnzahl) || $tabellenAnzahl < 1) {
        echo '<h2>Keine Datenbank gefunden, auf die der User "' . DATABASE_USER . '" Zugriff hat!</h2>
            ';
    } else {
        echo '<h2>Der User <span data-description="' . HINWEIS_DB_USER
            . '">"' . DATABASE_USER . '"</span> hat Zugriff auf ' . $tabellenAnzahl . ' Datenbanken!</h2>
            <div' . STYLE_DIV_UNIVERSAL . '>
            <form action="' . DATEI_NAME_SELBST . '" method="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                <input type="hidden" name="formMethod" value="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                <input type="hidden" name="insrtOrReplce" value="' . AUTOM_DUMPER_KONSTANTE_insrtOrReplce . '">
                <input type="hidden" name="anzMultiInsrts" value="' . AUTOM_DUMPER_KONSTANTE_anzMultiInsrts . '">
                ' . FORM_HIDE_USER_SETTG . '
                <h3>Wählen Sie eine der ' . $tabellenAnzahl . ' Datenbanken aus!</h3>
                <ul>
                    ';

        while ($datensatzArray = mysql_fetch_assoc_uni($datenbanken)) {
            echo PHP_EOL . '
                    <li>
                        <label style="font-size: 1.1em;">
                          <input type="radio" name="database" value="'
                . $datensatzArray['Database']
                . '"'
                . (defined('DATABASE_NAME') && DATABASE_NAME == $datensatzArray['Database'] ?
                    ' checked="checked"' : null)
                . '> &nbsp; <strong>'
                . $datensatzArray['Database']
                . '</strong></span>
                        </label>
                   </li>
                <!-- ' .
                print_r($datensatzArray, true) . ' -->';
        }//ENDE: while ($datensatzArray = mysql_fetch_assoc_uni())
        echo '
                </ul>
            <input type="submit" name="submitDump" value="Datenbank-Tabellen anzeigen">
        </form>
        </div>'
            . PHP_EOL
            . zurueckButton();

    }//ENDE: else ==> if ()

    echo '<br><br><div' . STYLE_DIV_UNIVERSAL . '>
            <pre style="display: inline;">' . SERVER_INFOS_KOMPAKT
        . EISENBAHN_BILDCHN . '</pre>
        </div>';

} elseif (empty($dbTable)) {

    echo '<h1 id="oben"><a href="' . DATEI_NAME_SELBST . '">' . BEZEICHNG_DES_TOOLS . '</a></h1>';

    if (MYSQL_DB_VERS_GROB > 4) {
        //gibt es in Version kleiner 5 nicht!
        $queryTabellen = '
            SHOW FULL TABLES IN ' . $database . '
            WHERE TABLE_TYPE LIKE \'BASE TABLE\';';//Keine VIEWS
    } else {
        $queryTabellen = '
            SHOW TABLES IN ' . $database . ';';//Alles
    }
    $dbTabellen = mysqli_query_uni($queryTabellen, '_dump');
    if (defined('MYSQL_ERROR_TXT_dump')) {
        echo '<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">
                        Fehler im Bereich "Functions (Code 1j788k)":
                        <br>' . $dbTabellen['_dump']['MySQL_Error_MeldgTxt'] . '
                        <br><br>Original Query:<br>' . $queryTabellen . '</h3>';
        $tabellenAnzahl = 0;//keine anzeigen
    } else {
        $tabellenAnzahl = MYSQL_NUM_ROWS_dump;//Wird gesetzt in "mysqli_query_uni()"
    }//ENDE: else ==> if()


    if (MYSQL_DB_VERS_GROB > 4) {
        $query2 = '
            SHOW FULL TABLES IN ' . $database . '
            WHERE TABLE_TYPE NOT LIKE \'BASE TABLE\';';//Keine TABLES
        $dbViews = mysqli_query_uni($query2, '_dump2');
        if (defined('MYSQL_ERROR_TXT_dump2')) {
            echo '<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">
                        Fehler im Bereich "Views" (Code 28j88o):
                         <br>' . $dbViews['_dump2']['MySQL_Error_MeldgTxt'] . '
                         <br><br>Original Query:<br>' . $query2 . '</h3>';
            $restlichAnzahl = 0;//keine anzeigen
        } else {
            $restlichAnzahl = MYSQL_NUM_ROWS_dump2;//Wird gesetzt in "mysqli_query_uni()"
        }//ENDE: else ==> if()
    } else {
        $restlichAnzahl = 0;//gibt es in Version kleiner 5 nicht!
    }//ENDE: else ==> if()

    if (MYSQL_DB_VERS_GROB > 4) {
        $queryFunctions = '
             SHOW FUNCTION STATUS WHERE Db LIKE "' . $database . '"';//Zeigt alle Funktionen
        $dbFunctions = mysqli_query_uni($queryFunctions, '_Functions');
        if (defined('MYSQL_ERROR_TXT_Functions')) {
            echo '<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">
                         Fehler im Bereich "Functions":
                     <br>' . $dbFunctions['_Functions']['MySQL_Error_MeldgTxt'] . '
                     <br><br>Original Query:<br>' . $queryFunctions . '</h3>';
            $functionsAnzahl = 0;//keine anzeigen
        } else {
            $functionsAnzahl = MYSQL_NUM_ROWS_Functions;//Wird gesetzt in "mysqli_query_uni()"
        }//ENDE: else ==> if()
    } else {
        $functionsAnzahl = 0;//gibt es in Version kleiner 5 nicht!
    }//ENDE: else ==> if()

    if (MYSQL_DB_VERS_GROB > 4) {
        $queryProcedure = '
             SHOW PROCEDURE STATUS WHERE Db LIKE "' . $database . '"';//Zeigt alle Funktionen
        $dbProcedure = mysqli_query_uni($queryProcedure, '_Procedure');
        if (defined('MYSQL_ERROR_TXT_Procedure')) {
            echo '<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">
                         Fehler im Bereich "Procedure":
                     <br>' . $dbProcedure['_Procedure']['MySQL_Error_MeldgTxt'] . '
                     <br><br>Original Query:<br>' . $queryProcedure . '</h3>';
            $procedureAnzahl = 0;//keine anzeigen
        } else {
            $procedureAnzahl = MYSQL_NUM_ROWS_Procedure;//Wird gesetzt in "mysqli_query_uni()"
        }//ENDE: else ==> if()
    } else {
        $procedureAnzahl = 0;//gibt es in Version kleiner 5 nicht!
    }//ENDE: else ==> if()

    echo '<h2>In der DB <span data-description="'
        . HINWEIS_DATABASE . '">"' . $database . '"</span> darf der User '
        . '<span data-description="' . HINWEIS_DB_USER
        . '">"' . DATABASE_USER . '"</span> auf folgendes zugreifen:
        <br> &nbsp; - <a href="#tabellen">' . $tabellenAnzahl . ' Tabellen</a>
        <br> &nbsp; - <a href="#views">' . $restlichAnzahl . ' Views und anderes</a>
        <br> &nbsp; - <a href="#functions">' . $functionsAnzahl . ' Functions</a>
        <br> &nbsp; - <a href="#procedure">' . $procedureAnzahl . ' Procedures</a>
      </h2>';

    if ($tabellenAnzahl > 0 || $restlichAnzahl > 0) {

        echo '<form action="' . DATEI_NAME_SELBST . '" method="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                <input type="hidden" name="formMethod" value="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                ' . FORM_HIDE_USER_SETTG . '
                <input type="hidden" name="database" value="' . $database . '">
                <input type="hidden" name="insrtOrReplce" value="' . AUTOM_DUMPER_KONSTANTE_insrtOrReplce . '">
                <input type="hidden" name="anzMultiInsrts" value="' . AUTOM_DUMPER_KONSTANTE_anzMultiInsrts . '">';

        if ($tabellenAnzahl > 0) {
            echo '<div' . STYLE_DIV_UNIVERSAL . '>
                <h3 id="tabellen">' . $tabellenAnzahl . ' Tabellen</h3>

                    <ol>';
            while ($datenArrTable = mysql_fetch_assoc_uni($dbTabellen)) {
                echo PHP_EOL
                    . '<li>
                        <label style="font-size: 1.1em;">
                          <input type="radio" name="dbTable" value="'
                    . $datenArrTable['Tables_in_' . $database]
                    . '"'
                    . ($dbTableAlt == $datenArrTable['Tables_in_' . $database] ?
                        ' checked="checked"' : null)
                    . '> &nbsp; <strong>'
                    . $datenArrTable['Tables_in_' . $database]
                    . '</strong>
                                &nbsp; <span style="color: red;">[Typ: '
                    . (MYSQL_DB_VERS_GROB > 4 ?
                        $datenArrTable['Table_type']
                        :
                        'gibt es in MySQL ' . MYSQL_DB_VERS_GROB . ' nicht'
                    )
                    . ']</span>
                            </label>'
                    . '</li>
                    <!-- ' .
                    print_r($datenArrTable, true) . ' -->';
                $dbTableLastInList = $datenArrTable['Tables_in_' . $database];
            }//ENDE: while ($datenArrTable = mysql_fetch_assoc_uni())
            echo '</ol></div>';
        }//ENDE: if ($tabellenAnzahl > 0

        if ($restlichAnzahl > 0) {
            echo '<div' . STYLE_DIV_UNIVERSAL . '>
                <h3 id="views">' . $restlichAnzahl . ' Views und anderes</h3>
                    <ol>';
            while ($datenArrView = mysql_fetch_assoc_uni($dbViews)) {
                echo PHP_EOL
                    . '<li>
                        <label style="font-size: 1.1em;">
                          <input type="radio" name="dbTable" value="'
                    . $datenArrView['Tables_in_' . $database]
                    . '"'
                    . ($dbTableAlt == $datenArrView['Tables_in_' . $database] ?
                        ' checked="checked"' : null)
                    . '> &nbsp; <strong>'
                    . $datenArrView['Tables_in_' . $database]
                    . '</strong>
                                &nbsp; <span style="color: red;">[Typ: ' . $datenArrView['Table_type'] . ']</span>
                            </label>'
                    . '</li>
                    <!-- ' .
                    print_r($datenArrView, true) . ' -->';
                $dbTableLastInList = $datenArrView['Tables_in_' . $database];
            }//ENDE: while ($datenArrView = mysql_fetch_assoc_uni())
            echo '</ol></div>';
        }//ENDE: if ($tabellenAnzahl > 0

        echo '<div' . STYLE_DIV_UNIVERSAL . '>
            ' . selectBoxAusgabeForm() . ' &nbsp;
            <input type="submit" name="submitDump" value="Daten anzeigen">
            </div>
        </form>'
            . PHP_EOL
            . zurueckButton();
    }//ENDE: else ==> if ($tabellenAnzahl > 0 || $restlichAnzahl > 0))

    if ($functionsAnzahl > 0 || $procedureAnzahl > 0) {

        if ($functionsAnzahl > 0) {
            echo '

            <form action="' . DATEI_NAME_SELBST . '" method="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                ' . FORM_HIDE_USER_SETTG . '
                <input type="hidden" name="formMethod" value="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                <input type="hidden" name="insrtOrReplce" value="' . AUTOM_DUMPER_KONSTANTE_insrtOrReplce . '">
                <input type="hidden" name="anzMultiInsrts" value="' . AUTOM_DUMPER_KONSTANTE_anzMultiInsrts . '">
                <input type="hidden" name="database" value="' . $database . '">
                <input type="hidden" name="dbTable" value="'
                . (!empty($dbTableLastInList) ? $dbTableLastInList : 'dummy')
                . '">
                <input type="hidden" name="ausgabeForm" value="StruktFunction">
                <div' . STYLE_DIV_UNIVERSAL . '>
                <h3 id="functions">' . $functionsAnzahl . ' Functions</h3>
                    <ol>';
            while ($arrFunctions = mysql_fetch_assoc_uni($dbFunctions)) {
                echo PHP_EOL
                    . '<li>
                      <span style="font-size: 1.1em;">
                          <input type="submit" name="dbBesonderes" value="'
                    . $arrFunctions['Name']
                    . '">  <strong>' . $arrFunctions['Name'] . '</strong>
                            &nbsp; <span style="color: red;">[Definer: ' . $arrFunctions['Definer'] . ']</span>
                      </span><br>
                      [Db] => <strong>' . $arrFunctions['Db'] . '</strong>;
                      [Type] => <strong>' . $arrFunctions['Type'] . '</strong>;
                      [Modified] => <strong>' . $arrFunctions['Modified'] . '</strong>;
                      [Created] => <strong>' . $arrFunctions['Created'] . '</strong>;
                      [Security_type] => <strong>' . $arrFunctions['Security_type'] . '</strong>;
                      [Comment] => <strong>' . $arrFunctions['Comment'] . '</strong>;
                      [character_set_client] => <strong>' . $arrFunctions['character_set_client'] . '</strong>;
                      [collation_connection] => <strong>' . $arrFunctions['collation_connection'] . '</strong>;
                      [Database Collation] => <strong>' . $arrFunctions['Database Collation'] . '</strong>;
                            <br><br>
                        </li>
                    <!-- ' .
                    print_r($arrFunctions, true) . ' -->';
            }//ENDE: while ($arrFunctions = mysql_fetch_assoc_uni())
            echo '</ol>
                </div>
            </form>';
        }//ENDE: if ($tabellenAnzahl > 0

        if ($procedureAnzahl > 0) {
            echo '
            <form action="' . DATEI_NAME_SELBST . '" method="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                ' . FORM_HIDE_USER_SETTG . '
                <input type="hidden" name="formMethod" value="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                <input type="hidden" name="insrtOrReplce" value="' . AUTOM_DUMPER_KONSTANTE_insrtOrReplce . '">
                <input type="hidden" name="anzMultiInsrts" value="' . AUTOM_DUMPER_KONSTANTE_anzMultiInsrts . '">
                <input type="hidden" name="database" value="' . $database . '">
                <input type="hidden" name="dbTable" value="'
                . (!empty($dbTableLastInList) ? $dbTableLastInList : 'dummy')
                . '">
                <input type="hidden" name="ausgabeForm" value="StruktProcedure">
                <div' . STYLE_DIV_UNIVERSAL . '>
                <h3 id="procedure">' . $procedureAnzahl . ' Procedures</h3>
                    <ol>';
            while ($arrProcedure = mysql_fetch_assoc_uni($dbProcedure)) {
                echo PHP_EOL . '
                       <li>
                          <span style="font-size: 1.1em;">
                              <input type="submit" name="dbBesonderes" value="'
                    . $arrProcedure['Name']
                    . '"> &nbsp;
                              <span style="color: red;">
                                    [Definer: <strong>' . $arrProcedure['Definer'] . '</strong>]
                              </span>
                          </span>
                          <br>
                          [Db] => <strong>' . $arrProcedure['Db'] . '</strong>;
                          [Type] => <strong>' . $arrProcedure['Type'] . '</strong>;
                          [Modified] => <strong>' . $arrProcedure['Modified'] . '</strong>;
                          [Created] => <strong>' . $arrProcedure['Created'] . '</strong>;
                          [Security_type] => <strong>' . $arrProcedure['Security_type'] . '</strong>;
                          [Comment] => <strong>' . $arrProcedure['Comment'] . '</strong>;
                          [character_set_client] => <strong>' . $arrProcedure['character_set_client'] . '</strong>;
                          [collation_connection] => <strong>' . $arrProcedure['collation_connection'] . '</strong>;
                          [Database Collation] => <strong>' . $arrProcedure['Database Collation'] . '</strong>;
                          <br><br>
                       </li>
                    <!-- ' . print_r($arrProcedure, true) . ' -->';
            }//ENDE: while ($arrProcedure = mysql_fetch_assoc_uni())
            echo '</ol>
                </div>
            </form>';
        }//ENDE: if ($procedureAnzahl > 0)
    }//ENDE: if ($functionsAnzahl > 0 || $procedureAnzahl > 0) {

    echo '<br><br><div' . STYLE_DIV_UNIVERSAL . '>
            <pre style="display: inline;">' . SERVER_INFOS_KOMPAKT
        . EISENBAHN_BILDCHN . '</pre>
        </div>';

} elseif (!empty($dbTable) && $ausgabeForm !== 'dump') {

    echo '<h1 id="oben"><a href="' . DATEI_NAME_SELBST . '">'
        . BEZEICHNG_DES_TOOLS . '</a></h1>
          <h2>Datenbank <span data-description="'
        . HINWEIS_DATABASE . '">"' . $database . '"</span> '
        . 'mit den Rechten des Users <span data-description="'
        . HINWEIS_DB_USER . '">"' . DATABASE_USER . '"</span></h2>';

    if (substr($ausgabeForm, 0, 6) === 'Strukt' && empty($queryNeu)) {
        $thema = substr($ausgabeForm, 6);
        if ($thema === 'Table') {
            $query = '
                SHOW CREATE TABLE ' . $database . '.' . $dbTable . ';'
                . PHP_EOL;
        } else {
            $query = '
                SHOW CREATE ' . strtoupper($thema) . ' ' . $database
                . '.' . strip_tags(trim($_POST['dbBesonderes'])) . ';'
                . PHP_EOL;
        }//ENDE: else ==> if ()

    } elseif (empty($queryNeu)) {
        $query = '
            SELECT  ' . $dbTable . '.*
              FROM  ' . $database . '.' . $dbTable . '
             LIMIT  0, 300;' . PHP_EOL;

    } else {
        $query = $queryNeu;

    }//ENDE: else ==> if ()
    $zeilenUmbruechInQuery = preg_match_all('/' . PHP_EOL . '/', $query);

    echo '
        <form action="' . DATEI_NAME_SELBST . '&amp;formMethod=' . AUTOM_DUMPER_KONSTANTE_formMethod . '" method="post">
            ' . FORM_HIDE_USER_SETTG . '
        <div' . STYLE_DIV_UNIVERSAL . '>
            <input type="hidden" name="formMethod" value="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
            <input type="hidden" name="insrtOrReplce" value="' . AUTOM_DUMPER_KONSTANTE_insrtOrReplce . '">
            <input type="hidden" name="anzMultiInsrts" value="' . AUTOM_DUMPER_KONSTANTE_anzMultiInsrts . '">
            <input type="hidden" name="database" value="' . $database . '">
            <input type="hidden" name="dbTable" value="' . $dbTable . '">
            <textarea name="queryNeu" cols="55" rows="'
        . ($zeilenUmbruechInQuery < 3 ? 4 : ($zeilenUmbruechInQuery + 1))
        . '" title="Das Formular wird immer mit Method=\'POST\' gesendet!"
                >' . trim($query) . '</textarea>
            <br>
            ' . selectBoxAusgabeForm(1) . ' &nbsp;
            <input type="submit" name="submitDump" value="Query ausführen ...">
        </div>
        </form>'
        . PHP_EOL
        . zurueckButton();

    $dbResult = mysqli_query_uni($query, '_dump');
    if (defined('MYSQL_ERROR_TXT_dump')) {
        echo '<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">'
            . $dbResult['_dump']['MySQL_Error_MeldgTxt'] . '</h3>';
        exit('<h2>Fehler: Die Anwendung wurde beendet (Code 65a48b)!</h2>');
    }//ENDE: if ()
    $gesammtAnzahl = (defined('MYSQL_NUM_ROWS_dump') ? MYSQL_NUM_ROWS_dump : 0);//Wird gesetzt in "mysqli_query_uni()"
    if ($dbResult == '1') {
        exit('<h2>Ihre Query wurde ausgeführt! (MySQL meldet: ' . $gesammtAnzahl . ' Datensätze betroffen.)</h2>');
    }

    if ($gesammtAnzahl < 1) {
        echo '<h3>Keine Daten in Tabelle ' . $dbTable . ' vorhanden!</h3>';

    } else {
        $zaehler = 0;

        if (strpos($query, $dbTable) > 1) {
            echo '<h3>Aus Tabelle ' . $dbTable . ' werden '
                . $gesammtAnzahl . ' Datensätze angezeigt!';
            if (strpos($query, 'LIMIT') > 1) {
                echo '<br>
                      HINWEIS: Die Ausgabemenge kann durch "LIMIT" eingeschränkt sein.</h3>';
            }//ENDE: if ()
            echo '</h3>';
        } else {
            echo '<h3>Ihre Query führt zu folgendem Ergebnis:</h3>';
        }//ENDE: else ==> if(strpos($query, $dbTable) > 1) {


        if ($ausgabeForm === 'tabelleNormal') {
            echo '
            <table>' . PHP_EOL;
            while ($loopArr = mysql_fetch_assoc_uni($dbResult)) {
                $zaehler++;
                if ($zaehler == 1) {
                    echo '
                <thead>
                    <tr>
                            <th class="zaehler">Zeilenzähler</th>' . PHP_EOL;
                    foreach ($loopArr as $arrKey => $arrWert) {
                        echo '<th>' . $arrKey . '</th>' . PHP_EOL;
                    }//ENDE: foreach;
                    echo '
                    </tr>
                </thead>
                <tbody>';
                }//ENDE: if ()
                echo '
                    <tr>
                        <th class="zaehler" data-description="Datensatz ' . $zaehler
                    . ' von ' . $gesammtAnzahl . '">' . $zaehler . ' / ' . $gesammtAnzahl . '</th>' . PHP_EOL;

                foreach ($loopArr as $arrKey => $arrWert) {
                    echo '
                        <td data-description="' . (!empty($arrWert) ? strlen($arrWert) : 0) . ' Zeichen in ' . $arrKey . '">'
                        . $arrWert //ehem. htmlentities($arrWert)
                        . '</td>' . PHP_EOL;
                }//ENDE: foreach
                echo '
                    </tr>' . PHP_EOL;
            }//ENDE: while
            echo '
                </tbody>
            </table>' . PHP_EOL;
        } else {

            while ($loopArr = mysql_fetch_assoc_uni($dbResult)) {
                $zaehler++;
                $arrayResult['a' . $zaehler] = $loopArr;
            }//ENDE: while

            if ($ausgabeForm === 'phpArrayPrintR') {
                echo '<h1>Die Ausgabe erfolgt als "print_r()":</h1>
                      <pre>$arrayResult: ' . print_r($arrayResult, true) . '</pre><hr>';

            } elseif ($ausgabeForm === 'phpArrayVarDump') {
                echo '<h1>Die Ausgabe erfolgt als "var_dump()":</h1>
                      <pre style="display: inline;">';
                var_dump($arrayResult);
                echo '</pre><hr>';

            } elseif ($ausgabeForm === 'phpArray2Json') {
                echo '<h1>Die Ausgabe erfolgt im Json-Format "json_encode()":</h1>
                      <pre>' . json_encode($arrayResult) . '</pre><hr>';

            } else {
                //Ausgabe für fast alles andere:
                echo '<pre>'
                    . arrayOutput($arrayResult,
                        'DB-Resultset',
                        ($ausgabeForm === 'tabelleText' ? 'text' : 'html'))
                    . '</pre>';
            }//ENDE: else ==> if ()
        }//ENDE: else ==> if()

    }//ENDE: else ==> if ($gesammtAnzahl < 1)

    echo '<br><br><div' . STYLE_DIV_UNIVERSAL . '>
            <pre style="display: inline;">' . SERVER_INFOS_KOMPAKT
        . EISENBAHN_BILDCHN . '</pre>
        </div>';

} elseif (!empty($dbTable)) {

    $multiInsertNeuBei = ANZAHL_DER_MULTI_INSERTS;

    $trennerSQL = PHP_EOL . PHP_EOL . '-- -----' . PHP_EOL . PHP_EOL;

    if (empty($queryNeu)) {
        $query = '
                SELECT  x.*
                  FROM ' . $database . '.' . $dbTable . ' AS x ;'
            . PHP_EOL;
    } else {
        $query = $queryNeu . PHP_EOL;
    }//ENDE: else ==> if (empty($queryNeu))
    $dbResult = mysqli_query_uni($query, '_dump');

    if (defined('MYSQL_ERROR_TXT_dump')) {
        echo '<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">'
            . $dbResult['_dump']['MySQL_Error_MeldgTxt'] . '</h3>';
        exit('<h2>Fehler: Die Anwendung wurde beendet (Code 65f88g)!</h2>');
        $gesammtAnzahl = 0;
    } else {
        $gesammtAnzahl = (int)(defined('MYSQL_NUM_ROWS_dump') ? MYSQL_NUM_ROWS_dump : 0);//Wird gesetzt in "mysqli_query_uni()"
    }//ENDE: else ==> if()

    $qCreate1 = '
         SHOW CREATE TABLE ' . $database . '.' . $dbTable . ';' . PHP_EOL;
    $dbCreate1 = mysqli_query_uni($qCreate1, '_create');
    if (defined('MYSQL_ERROR_TXT_create')) {
        //Wenn Error, ist es vermutlich eine View
        echo '<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">
                    ' . $dbCreate1['_create']['MySQL_Error_MeldgTxt'] . '
                    <br><br>Original Query:<br>' . $qCreate1 . '
                    <br><br> - (Code 62f88g)</h3>';

        $qCreate2 = '
                 SHOW CREATE VIEW ' . $database . '.' . $dbTable . ';'
            . PHP_EOL;
        $dbCreate2 = mysqli_query_uni($qCreate2, '_create2');
        if (defined('MYSQL_ERROR_TXT_create2')) {
            //Wenn jetzt hier auch nichts rauskommt, dann STOPP!
            exit('<h3 style="cursor: help; color: #990000; background-color: #FFCC00;">
                        ' . $dbCreate2['_create2']['MySQL_Error_MeldgTxt'] . '
                        <br><br>Original Query:<br>' . $qCreate2 . '
                        <br><br> - (Code 63f88g)</h3>');
        }

        $createStatement = mysql_fetch_assoc_uni($dbCreate2);
        $titelSpezial = 'View';
        $createStatementTableName = $createStatement['View'];
        $createStatementSelf = $createStatement['Create View'] . ';';
        $keineDatenAusgeben = 1;//Bei Views gibt es keine Daten!
        $deleteQuery = '';
        $startInsertQuery1 = '';
        $startInsertQuery2 = '';//ENDE: else ==> if()

    } else {
        $createStatement = mysql_fetch_assoc_uni($dbCreate1);
        if (!empty($createStatement['Table'])) {
            $titelSpezial = 'Table';
            $createStatementTableName = $createStatement['Table'];
            $createStatementSelf = $createStatement['Create Table'] . ';';
        } elseif (!empty($createStatement['View'])) {
            $titelSpezial = 'View';
            $createStatementTableName = $createStatement['View'];
            $createStatementSelf = $createStatement['Create View'] . ';';
            //$createStatementSelf      = wordwrap($createStatementSelf, 90);
            $keineDatenAusgeben = 1;//Bei Views gibt es keine Daten!
        } else {
            $titelSpezial = '';
            $createStatementTableName = '';
            $createStatementSelf = '';
        }//ENDE: else ==> if ()

        $deleteQuery = '
            DELETE 
            FROM ' . $database . '.' . $createStatementTableName . '
            WHERE  1 = 1;';
        $startInsertQuery1 = '
        ' . COMAND_INSERT_OR_REPLACE . ' INTO ' . $database . '.' . $createStatementTableName . '
            (';
        $startInsertQuery2 = ')
        VALUES ';
    }//ENDE: else ==> if (defined('MYSQL_ERROR_TXT_create'))

    //    echo '<h3 style=" background-color: #FFff00;">[[['.print_r($createStatement, true).']]]</h3>';

    echo '<h1 id="oben">-- <a href="' . DATEI_NAME_SELBST . '"
                title="Neu Laden! - Von Vorne beginnen."
                onclick="return confirm(\'Wollen Sie wirklich?\')">"'
        . BEZEICHNG_DES_TOOLS . '</a>"</h1>'
        . PHP_EOL
        . '<h2 id="nachOben">-- Einige Infos am <a href="#ansEnde" '
        . 'data-description="An das Ende der Seite (Unten)">Ende des Dumps</a>!</h2>'
        . PHP_EOL
        . '<pre style="display: inline;">'
        . PHP_EOL . '-- HINWEISE:' . PHP_EOL
        . '-- "Copy &amp; Paste" ist möglich!'
        . PHP_EOL
        . '-- ==&gt; (Strg+a, Strg+c, Strg+v in ein Textarea)'
        . PHP_EOL . '--' . PHP_EOL
        . '-- Aus Tabelle ' . $dbTable . ' werden '
        . $gesammtAnzahl . ' Datensätze als ' . COMAND_INSERT_OR_REPLACE . ' ausgegeben!'
        . PHP_EOL
        . '-- Diese Datensatzmenge kann durch "LIMIT" eingeschränkt sein.'
        . PHP_EOL . '--' . PHP_EOL
        . SERVER_INFOS_KOMPAKT
        . '-- --------------------------------------------------'
        . PHP_EOL . '--' . PHP_EOL
        . '-- Fremdschluessel-Kontrolle deaktivieren und weiteres...'
        . PHP_EOL . '--' . PHP_EOL
        . 'SET FOREIGN_KEY_CHECKS=0;'
        . PHP_EOL . '--' . PHP_EOL
        . 'SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";'
        . PHP_EOL
        . 'SET time_zone = "+00:00";'
        . PHP_EOL . '--' . PHP_EOL
        . '-- --------------------------------------------------'
        . PHP_EOL . '--' . PHP_EOL
        . '-- Datenbank: ' . $database . ''
        . PHP_EOL . '--' . PHP_EOL
        . '-- --------------------------------------------------';

    echo PHP_EOL . '--' . PHP_EOL
        . '-- Create-Statement ' . $titelSpezial . ': '
        . $database . '.' . $createStatementTableName . ';'
        . PHP_EOL . '--' . PHP_EOL
        . $createStatementSelf
        . PHP_EOL . '--' . PHP_EOL
        . '-- --------------------------------------------------';

    if (empty($keineDatenAusgeben)) {

        $groessenAnzeigr = 0;
        $keySammler = '';

        $schleifenZaehler = 1;
        $alleSchleifenZaehler = 0;
        $anzahlInserts = 0;

        if ($gesammtAnzahl < 1) {
            echo PHP_EOL . '--' . PHP_EOL
                . '-- <strong>Keine Daten in Tabelle ' . $dbTable . ' vorhanden!</strong>'
                . PHP_EOL;

        } else {
            echo PHP_EOL . '--' . PHP_EOL
                . '-- <strong>Datenbank-Tabelle ' . $dbTable . ' leeren:</strong>'
                . PHP_EOL . '--' . PHP_EOL
                . $deleteQuery
                . PHP_EOL . '--' . PHP_EOL
                . '-- --------------------------------------------------'
                . PHP_EOL . '--' . PHP_EOL
                . '-- <strong>Daten für Tabelle ' . $dbTable . '</strong>'
                . PHP_EOL;

            while ($datensatzArray = mysql_fetch_assoc_uni($dbResult)) {
                ++$alleSchleifenZaehler;
                if (empty($getAllKeys)) {
                    //der Loop wird nur in erster WHILE-Schleife gebraucht.
                    foreach ($datensatzArray as $keys4Insert => $w) {
                        $keySammler .= '' . $keys4Insert . ', ';
                    }//ENDE: foreach;
                    $getAllKeys = substr($keySammler, 0, -2);
                }//ENDE: if ()

                $werteSammler = '(';
                foreach ($datensatzArray as $werte) {
                    $groessenAnzeigr += strlen($werte ?? '');
                    $werteSammler .= '
                            "' . str_replace('"', '\"', trim($werte ?? '')) . '", ';
                }//ENDE: foreach;
                $insertWerteGesammelt = htmlentities(substr($werteSammler, 0, -2) . '),');

                //Damit die jeweiligen INSERTs nicht zu gross werden:
                if ($groessenAnzeigr > 100000 && empty($_GET['anzMultiInsrts'])) {
                    $multiInsertNeuBei = 5;//Nur ? bei grossen Datenmengen
                    $groessenAnzeigr = 0;//Zaehler zuruecksetzen
                }//ENDE: if ($groessenAnzeigr > 100000)


                if ($schleifenZaehler == 1) {
                    //Naechsten Insert-Befehl starten:
                    echo '--' . PHP_EOL
                        . '-- --------------------------------------------------'
                        . PHP_EOL . '--' . PHP_EOL
                        . $startInsertQuery1
                        . $getAllKeys
                        . $startInsertQuery2
                        . endeMitKommaOderSemikolon($insertWerteGesammelt,
                            $gesammtAnzahl,
                            $alleSchleifenZaehler)
                        . PHP_EOL . PHP_EOL;
                    $anzahlInserts++;
                    $schleifenZaehler++;
                    $groessenAnzeigr = 0;//Zaehler zuruecksetzen
                } else {
                    if ($schleifenZaehler < $multiInsertNeuBei) {
                        echo endeMitKommaOderSemikolon($insertWerteGesammelt,
                                $gesammtAnzahl,
                                $alleSchleifenZaehler)
                            . PHP_EOL . PHP_EOL;
                        $schleifenZaehler++;//Hochzaehlen
                    } else {
                        //hier immer Semikolon statt Komma
                        echo endeMitKommaOderSemikolon($insertWerteGesammelt,
                                6,
                                6)
                            . PHP_EOL . PHP_EOL;
                        $schleifenZaehler = 1;//Zaehler zuruecksetzen
                    }//ENDE: else ==> if ()

                }//ENDE: else ==> if()

            }//ENDE: while
        }//ENDE: else ==> if ($gesammtAnzahl > 0)
    }//ENDE: if (empty($keineDatenAusgeben))

    echo PHP_EOL
        . '-- --------------------------------------------------'
        . PHP_EOL . '--' . PHP_EOL
        . '-- Fremdschluessel-Kontrolle wieder aktivieren'
        . PHP_EOL . '--' . PHP_EOL
        . 'SET FOREIGN_KEY_CHECKS=1;'
        . PHP_EOL . '--' . PHP_EOL
        . '</pre><br>';

    if (empty($keineDatenAusgeben)) {
        echo PHP_EOL
            . '<h2>-- ENDE (Insgesamt ' . $gesammtAnzahl
            . ' Datensaetze! ' . $anzahlInserts
            . ' Insert-Anweisungen mit max. je '
            . $multiInsertNeuBei . ' Datensaetzen)!</h2>';
    }//ENDE: if (empty($keineDatenAusgeben)) {

    echo PHP_EOL
        . '-- <a href="#nachOben" id="ansEnde" title="An den Anfang der Seite (Oben)">nach Oben</a>';

}//ENDE: else ==> if (empty($dbTable))

/** Ausgabe der Selectbox zur Wahl der Ausgabeform
 *
 * @param string $showNotStrukt (Wenn ja, keine 'StruktTable' anzeigen)
 *
 * @return string  (fertige Selectbox)
 */
function selectBoxAusgabeForm($showNotStrukt = '')
{
    if (!empty($_POST['ausgabeForm'])) {
        $post_ausgabeform = strip_tags($_POST['ausgabeForm']);
    } else {
        $post_ausgabeform = 'tabelleNormal';
    }//ENDE: else ==> if ()
    return '
        <select name="ausgabeForm">
            ' . (empty($showNotStrukt) ?
            '<option value="StruktTable"'
            . ($post_ausgabeform === 'StruktTable' ? ' selected="selected"' : null)
            . '>Struktur der Tabelle/View</option>' : '') . '
            <option value="tabelleNormal"'
        . ($post_ausgabeform === 'tabelleNormal' ? ' selected="selected"' : null)
        . '>Als eindimensionale Tabelle (Standard)</option>
            <option value="tabelleHtml"'
        . ($post_ausgabeform === 'tabelleHtml' ? ' selected="selected"' : null)
        . '>Als einzelne HTML-Tabelle</option>
            <option value="phpArrayPrintR"'
        . ($post_ausgabeform === 'phpArrayPrintR' ? ' selected="selected"' : null)
        . '>Als PHP-Array mit print_r()</option>
            <option value="phpArrayVarDump"'
        . ($post_ausgabeform === 'phpArrayVarDump' ? ' selected="selected"' : null)
        . '>Als PHP-Array mit vardump()</option>
            <option value="phpArray2Json"'
        . ($post_ausgabeform === 'phpArray2Json' ? ' selected="selected"' : null)
        . '>Im JSON-Format</option>
            <option value="tabelleText"'
        . ($post_ausgabeform === 'tabelleText' ? ' selected="selected"' : null)
        . '>Als einzelne Text-Tabelle</option>
            <option value="dump"'
        . ($post_ausgabeform === 'dump' ? ' selected="selected"' : null)
        . '>Als MySQL-Dump</option>
        </select>';
}//ENDE: function selectBoxAusgabeForm(...)


/**
 * Zentraler Zusammenbau der Ausgabe des Zurueckbuttons
 *
 * @return string (fertiges HTML-Formelement)
 */
function zurueckButton()
{
    $nochObenLinkUndAnderes = '
        <a href="#oben" data-description="An den Anfang der Seite (Oben)">nach Oben...</a>
        &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;
        <a href="' . DATEI_NAME_SELBST . '&amp;changeUser=1" data-description="Hier können Sie einen anderen '
        . 'User eingeben, sofern Sie dessen Passwort kennen.">Anderen Benutzer eingeben ...</a>';
    $zurueckbutton = '
            <div' . STYLE_DIV_UNIVERSAL . '>';

    if (!empty($_POST) && !empty($_POST['database'])) {
        $zurueckbutton .= '
                <form action="' . DATEI_NAME_SELBST . '" method="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                <input type="hidden" name="formMethod" value="' . AUTOM_DUMPER_KONSTANTE_formMethod . '">
                    <input type="hidden" name="insrtOrReplce" value="' . AUTOM_DUMPER_KONSTANTE_insrtOrReplce . '">
                    <input type="hidden" name="anzMultiInsrts" value="' . AUTOM_DUMPER_KONSTANTE_anzMultiInsrts . '">
                    ' . FORM_HIDE_USER_SETTG;
        if (!empty($_POST['dbTable'])) {
            $buttonText = 'Zurück zur Auswahl der DB-Tabelle';
            $zurueckbutton .= '
                    <input type="hidden" name="database" value="' . strip_tags($_POST['database']) . '">
                    <input type="hidden" name="dbTableAlt" value="' . strip_tags($_POST['dbTable']) . '">
                    <input type="hidden" name="ausgabeForm" value="'
                . (!empty($_POST['ausgabeForm']) ? strip_tags($_POST['ausgabeForm']) : null)
                . '">';
        } else {
            $buttonText = 'Zurück zur Auswahl der Datenbank';
            $zurueckbutton .= '
                    <input type="hidden" name="ausgabeForm" value="'
                . (!empty($_POST['ausgabeForm']) ? strip_tags($_POST['ausgabeForm']) : null)
                . '">';
        }//ENDE: else ==> if ()
        $zurueckbutton .= '
                    <input type="submit" name="submitZurueck" id="submitZurueck"
                           value="&lt;&lt;&lt; ' . $buttonText . '"
                           style="color: #990000; background-color: #FFFF00; font-size: 0.9em; '
            . ' font-weight: bold; border: 2px dotted #990000; padding: 0.5em; '
            . ' cursor: pointer;">
                    &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;
                    ' . $nochObenLinkUndAnderes . '
                </form>';

    } else {
        $zurueckbutton .= $nochObenLinkUndAnderes;
    }//ENDE: else ==> if ()

    return $zurueckbutton . '
                </div><!-- ENDE: div' . STYLE_DIV_UNIVERSAL . ' -->';

}//ENDE: function zurueckButton()

/** Setzt am Ende Semikolon statt Komma wenn Zaehler gleich sind
 *
 * @param string $datensaetze
 * @param string $gesammtAnzahl
 * @param string $alleSchleifenZaehler
 *
 * @return string  (Zeile mit Komma oder Semikolon)
 */
function endeMitKommaOderSemikolon($datensaetze,
                                   $gesammtAnzahl,
                                   $alleSchleifenZaehler)
{
    if ($alleSchleifenZaehler != $gesammtAnzahl) {
        return $datensaetze;
    }
    return substr($datensaetze, 0, -1) . ';';
}//ENDE: function endeMitKommaOderSemikolon(...)


function arrayOutput($array_meiner_werte, $arrayname = '(Name unbekannt)',
                     $ausgabe_form = 'html', $txt_trenner = '')
{
    if ($ausgabe_form !== 'html') {
        //ich gehe davon aus, wenn nicht html gesetzt, dann reinen Text ausgeben!
        if (empty($txt_trenner)) {
            //wenn kein Trenner definiert, dann diesen benutzen!
            $txt_trenner = PHP_EOL
                . '#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#'
                . PHP_EOL;
        }//ENDE: if (empty($txt_trenner))
    }//ENDE: if ($ausgabe_form != 'html')

    if (is_array($array_meiner_werte)) {

        $titel = 'Inhalt von "' . $arrayname . '":';
        $summe = count($array_meiner_werte);

        if ($ausgabe_form !== 'html') {
            //Text-Ausgabe
            $ausgabe = $txt_trenner
                . $titel . ' (' . $summe . ' Eintraege)'
                . PHP_EOL;
        } else {
            //HTML-Ausgabe
            $ausgabe = '<table '
                . 'style="color: #0f0f0f; background-color: #ffffff;" '
                . 'cellspacing="1" '
                . 'cellpadding="6" '
                . 'border="1" '
                . 'summary="' . $titel . '">'
                . PHP_EOL;
            $ausgabe .= '<tr>
                        <th style="text-align: left; white-space: nowrap; color: #ffffff; background-color: #990000;" '
                . 'colspan="5">'
                . $titel . ' (' . $summe . ' Eintr&auml;ge)</th>
                    </tr>' . PHP_EOL;
        }//ENDE: else ==> if ($ausgabe_form != 'html')

        $loop_zaehler = 1;//Zaehler-Variable starten!
        foreach ($array_meiner_werte as $mein_schluessel => $mein_inhalt) {
            if (is_int($mein_inhalt)) {
                $typ = 'integer';
            } elseif (is_array($mein_inhalt)) {
                $typ = 'array';
            } else {
                $typ = 'string';
            }//ENDE: else ==> if(is_int($mein_inhalt))

            if (is_string($mein_inhalt)) {
                $mein_inhalt = htmlentities($mein_inhalt);
            } elseif (is_array($mein_inhalt)) {
                $mein_inhalt = arrayOutput($mein_inhalt, $mein_schluessel, $ausgabe_form, $txt_trenner);
            }//ENDE: elseif ==> if(is_string($mein_inhalt))

            if ($ausgabe_form !== 'html') {
                //Text-Ausgabe
                $ausgabe .= $loop_zaehler . '. von ' . $summe . ') '
                    . $arrayname . '[\'' . $mein_schluessel . '\']'
                    . ' ==> "'
                    . $mein_inhalt . '" (' . $typ . ')'
                    . PHP_EOL;
            } else {
                //HTML-Ausgabe
                $ausgabe .= '<tr>
                            <td style="vertical-align: top; white-space: nowrap;">' . $loop_zaehler . '. von ' . $summe . '</td>
                            <td style="vertical-align: top; white-space: nowrap;" title="Typ: ' . $typ . '">'
                    . '<strong>'
                    . $arrayname . '[\'' . $mein_schluessel . '\']'
                    . '</strong></td>
                            <td style="vertical-align: top; white-space: nowrap;">&raquo;</td>
                            <td style="text-align: left; vertical-align: top;" title="Typ: ' . $typ . '">' . $mein_inhalt . '</td>
                            <td style="vertical-align: top;">' . $typ . '</td>
                        </tr>' . PHP_EOL;
            }//ENDE: else ==> if ($ausgabe_form != 'html')

            $loop_zaehler++;//immer einen hoch zaehlen

        }//ENDE: foreach($array_meiner_werte as $mein_schluessel => $mein_inhalt)

        if ($ausgabe_form !== 'html') {
            //Text-Ausgabe
            $ausgabe .= $txt_trenner;
        } else {
            //HTML-Ausgabe
            $ausgabe .= PHP_EOL . '</table>';//Variable definieren
        }//ENDE: else ==> if ($ausgabe_form != 'html')

    }//ENDE: if(is_array($array_meiner_werte))
    else {
        if ($ausgabe_form !== 'html') {
            //Text-Ausgabe
            $ausgabe = $txt_trenner . $arrayname . ' ist kein Array (Inhalt: "' . $array_meiner_werte . '")' . $txt_trenner;
        } else {
            //HTML-Ausgabe
            $ausgabe = '<h3>' . $arrayname . ' ist kein Array (Inhalt: "' . $array_meiner_werte . '")</h3>';
        }//ENDE: else ==> if ($ausgabe_form != 'html')
    }//ENDE: else ===> if(is_array($array_meiner_werte))

    return $ausgabe;
}//ENDE: function arrayOutput(...)

if (defined('AUSGABE_MIT_HTMLHEAD') && AUSGABE_MIT_HTMLHEAD === 1) {
?></body>
</html><?php
}//ENDE: if (defined('AUSGABE_MIT_HTMLHEAD') && AUSGABE_MIT_HTMLHEAD === 1)