PHP: Datei DB-Dumper für MySQL/MariaDB
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&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 . '&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)
. '> <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> - <a href="#tabellen">' . $tabellenAnzahl . ' Tabellen</a>
<br> - <a href="#views">' . $restlichAnzahl . ' Views und anderes</a>
<br> - <a href="#functions">' . $functionsAnzahl . ' Functions</a>
<br> - <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)
. '> <strong>'
. $datenArrTable['Tables_in_' . $database]
. '</strong>
<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)
. '> <strong>'
. $datenArrView['Tables_in_' . $database]
. '</strong>
<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() . '
<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>
<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']
. '">
<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 . '&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) . '
<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 & Paste" ist möglich!'
. PHP_EOL
. '-- ==> (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>
|
<a href="' . DATEI_NAME_SELBST . '&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="<<< ' . $buttonText . '"
style="color: #990000; background-color: #FFFF00; font-size: 0.9em; '
. ' font-weight: bold; border: 2px dotted #990000; padding: 0.5em; '
. ' cursor: pointer;">
|
' . $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ä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;">»</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)