In diesem PHP Tutorial möchte ich ihnen erklären, wie sie per Zufall zwei MySQL Tabellen abfragen können. Dieses Tutorial habe ich geschrieben, da in unserem Forum zu dieser Thematik eine Frage gestellt wurde. Die Anwendungsbeispiele sind Recht vielseitig und Sie könnten unterschiedliche Skripte zu dieser Thematik veröffentlichen. In diesem Beispiel gehe ich ausschließlich darauf ein, wie Sie per Zufall zwei unterschiedliche Tabellen ansteuern. Sie könnten natürlich auch zwei unterschiedliche Datenbänke mit diesem Script abfragen.
Als erstes müssen wir über den PHPMyAdmin zwei Tabellen anlegen, die sie abfragen möchten. Nachfolgend finden sie eine entsprechendes SQL Statement, was sie einfach in das SQL Fenster in PHPMyAdmin einfügen müssen. Danach wird automatisch, die zwei unterschiedlichen Tabellen angelegt.
Das SQL Statement:
CREATE TABLE IF NOT EXISTS `datenbank1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datenbank` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 2 ;
INSERT INTO `datenbank1` (`id`, `datenbank`) VALUES
(1, 'Daten von Tabelle: datenbank1');
CREATE TABLE IF NOT EXISTS `datenbank2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datenbank` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 2 ;
INSERT INTO `datenbank2` (`id`, `datenbank`) VALUES
(1, 'Daten von Tabelle: datenbank2');
Die gegebenen MySQL-Abfragen erstellen zwei Tabellen, datenbank1
und datenbank2
, die jeweils zwei Spalten enthalten:
-
Tabelle datenbank1
:
- Spalte
id
: Ein automatisch inkrementierender ganzzahliger Wert, der als Primärschlüssel dient. - Spalte
datenbank
: Ein Zeichenfolgenfeld mit einer maximalen Länge von 255 Zeichen, das Daten zur Tabelle datenbank1
speichert.
-
Tabelle datenbank2
:
- Spalte
id
: Ein automatisch inkrementierender ganzzahliger Wert, der als Primärschlüssel dient. - Spalte
datenbank
: Ein Zeichenfolgenfeld mit einer maximalen Länge von 255 Zeichen, das Daten zur Tabelle datenbank2
speichert.
Die Struktur der Datenbanken als visuelle Darstellung
Tabelle datenbank1
Feld | Typ |
id | int(11) |
datenbank | varchar(255) |
Tabelle datenbank2
Feld | Typ |
id | int(11) |
datenbank | varchar(255) |
Nachdem wir die zwei Tabellen angelegt haben, kommen wir zum Script. Nachfolgend finden sie das Script womit Sie auf zwei unterschiedliche Tabellen zugreifen können. In diesem Beispiel sehen sie die MySQL Zugangsdaten von meinem lokalen Server. Diese Daten müssen sie natürlich, an ihren anpassen.
Das Script:
Die Ausgabe würde dann folgendermaßen aussehen:
<?php
/**
* Daten von der ersten Datenbank
*/
/**
* Der Host von der ersten Datenbank
*/
$host['1'] = 'localhost';
/**
* Der MySQL User von der ersten MySQL-Datenbank
*/
$user['1'] = 'root';
/**
* Das Passwort für den MySQL User der ersten MySQL-Datenbank
*/
$passwort['1'] = '***';
/**
* Die erste Datenbank, worin die Tabelle gespeichert ist
*/
$datenbank['1'] = 'zufall_test';
/**
* Name der Tabelle
*/
$table['1'] = 'datenbank1';
/**
* ###################################
*/
/**
* Daten von der zweiten Datenbank
*/
/**
* Der Host von der zweiten Datenbank
*/
$host['2'] = 'localhost';
/**
* Der MySQL User von der zweiten MySQL-Datenbank
*/
$user['2'] = 'root';
/**
* Das Passwort für den MySQL User der zweiten MySQL-Datenbank
*/
$passwort['2'] = '***';
/**
* Die zweite Datenbank, worin die Tabelle gespeichert ist
*/
$datenbank['2'] = 'zufall_test';
/**
* Name der Tabelle
*/
$table['2'] = 'datenbank2';
/**
* Als nächstes ermitteln wir in der Variable $host die
Anzahl der unterschiedlichen host, in unserem Beispiel
müsste die Zahl 2 sein.
*/
$zufall_key = rand(1, count($host));
/**
* Nachdem wir eine zufällige Datenbank ausgewählt haben,
erstellen wir eine Verbindung zur MySQL-Datenbank
mit der MySQLi-Erweiterung.
*/
$db = new mysqli($host[$zufall_key], $user[$zufall_key], $passwort[$zufall_key], $datenbank[$zufall_key]);
/**
* Überprüfen, ob eine Verbindung hergestellt werden konnte
*/
if ($db->connect_error) {
die('Verbindung fehlgeschlagen: ' . $db->connect_error);
}
/**
* Nun bauen wir unser SQL Statement zusammen, womit wir eine
Abfrage an die Datenbank stellen möchten.
*/
$sql_select = "SELECT id, datenbank FROM `" . $table[$zufall_key] . "`;";
/**
* Mit der Methode query() der MySQLi-Verbindung senden wir
unsere Abfrage an die Datenbank und speichern das
Resultat in der Variable $result.
*/
$result = $db->query($sql_select);
/**
* Überprüfen, ob die Abfrage erfolgreich war
*/
if ($result) {
echo '<strong>ID</strong>;<strong>Datenbank</strong><br>';
while ($daten = $result->fetch_assoc()) {
echo $daten["id"] . ';' . $daten["datenbank"] . '<br>';
}
} else {
echo 'Es sind keine Daten vorhanden!';
}
/**
* Verbindung schließen
*/
$db->close();
?>
Ausgabe:
ID;Datenbank
1;Daten von Tabelle: datenbank1
oder
ID;Datenbank
1;Daten von Tabelle: datenbank2
Erklärung:
Hier ist eine ausführliche Erklärung Schritt für Schritt:
-
Datenbankkonfiguration: Das Skript beginnt mit der Konfiguration von Datenbankverbindungsparametern für zwei verschiedene Datenbanken. Jede Datenbank hat einen eigenen Host, Benutzer, Passwort, Datenbankname und Tabelle.
-
Zufällige Datenbankauswahl: Das Skript verwendet die rand()
-Funktion, um zufällig zwischen den beiden konfigurierten Datenbanken zu wählen. Dies ermöglicht es, eine zufällige Datenbank für die Abfrage auszuwählen.
-
Verbindung zur Datenbank herstellen: Mit den ausgewählten Datenbankverbindungsparametern wird eine Verbindung zur gewählten Datenbank mit der MySQLi-Erweiterung hergestellt. Falls die Verbindung fehlschlägt, wird eine Fehlermeldung angezeigt.
-
SQL-Abfrage erstellen und ausführen: Ein SQL-Abfrage-String wird erstellt, um alle Datensätze aus der ausgewählten Tabelle abzurufen. Dieser Abfrage-String wird dann mithilfe der query()
-Methode an die Datenbank gesendet, um die Abfrage auszuführen.
-
Datensätze anzeigen: Falls die Abfrage erfolgreich ist (kein Fehler auftritt), werden die abgerufenen Datensätze verarbeitet und angezeigt. Das Skript verwendet eine Schleife, um durch die Datensätze zu iterieren und die Werte der Spalten „id“ und „datenbank“ auszugeben.
-
Verbindung schließen: Nachdem die Datensätze verarbeitet wurden, wird die Verbindung zur Datenbank mit der Methode close()
geschlossen, um die Ressourcen freizugeben.
-
Störungsbearbeitung: Wenn während eines Schritts ein Fehler auftritt, wird er durch entsprechende Fehlermeldungen behandelt, um dem Entwickler eine Rückmeldung über das Problem zu geben.
So das soll es gewesen sein, dieses Beispiel verdeutlicht nur, wie Sie auf zwei unterschiedliche Tabellen beziehungsweise Datenbänke drauf zugreifen können. Vor ein paar Tagen habe ich ähnliche Beiträge verfasst, hier ging es darum, wie Sie etwa zufällig ein Bild oder Text anzeigen lassen kann. Vielleicht ist dies euch verständlicher, um zufällige Daten auszugeben. Wenn ihr nach Anregungen oder Fragen zu dieser Thematik hat, könnte gern in unserem Supportforum entsprechende Kritik oder Vorschläge veröffentlichen.