Frage von BeerenFischer, 1

PHP: Datenbankabfrage in Array speichern und Arrayinhalt testen | Ich verzweifle!!!

Hallo, bereits 5 Stunden an der gleichen Aufgabe zu sitzen hat mich dazu veranlasst zu denken dass ich einfach unfähig bin in Sachen Datenbanken. Ich werde gleich verrückt. Kein Scherz. Ich habe schon YouTube-Videos angeschaut und so ziemlich alle Foren abgeklappert aber nichts funktioniert einfach. So nun meine Frage:

Wie funktioniert es dass ich aus meiner ganz normalen MySQL-Datenbank EINE Tabellenspalte auslesen (nickname) kann und diese in ein Array speichere, welches ich dann auf einen bestimmten Inhalt prüfe. Also ich will im Array alle nicknames haben in meiner Datenbank. So kann ich dann ja mit irgendeinem Befehl das Array auf einen bestimmteb Inhalt prüfen, aber egal. Das wichtigste ist wie ich ins Array alle Nicknames kriege?

PS: Bitte helft mir in PHP 5.4 und nicht 5.5

Danke, ich werde jetzt schlafen gehen (vielleicht) und morgen wieder hier sein, also eher keine Antwort erwarten.

Antwort
von FaronWeissAlles, 1
Wie funktioniert es dass ich aus meiner ganz normalen MySQL-Datenbank EINE Tabellenspalte auslesen (nickname) kann

Indem du mit SELECT über die gesamte Tabelle iterierst...

und diese in ein Array speichere, welches ich dann auf einen bestimmten Inhalt prüfe.

...und nachdem du das getan hast kannst du ganz normal deine PHP-Funktion nutzen. ABER: Das Datenbanksystem ist genau auf so etwas ausgelegt! Die Suchfunktion der Datenbank ist deutlich schneller als PHP das kann (vor allem je mehr Datensätze du hast). Du solltest daher möglichst alles in einem Rutsch so aus der Datenbank auslesen wie du es brauchst

MySQL und andere SQL-basierte Datenbanken arbeiten immer Zeilenweise. Es gibt daher keine direkte Funktion die dir sofort alle Einträge einer Spalte liefert. Du musst immer durch alle Zeilen gehen wenn du das willst oder die Datenbank filtern lassen (wie gesagt, das ist sinnvoller)


Hier ein Beispiel:

Verbindungsaufbau:

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// Create connection
$db = new mysqli($servername, $username, $password);

// Check connection
if (!$db->connect_errno) {
    die("Connection failed: (" . $db->connect_errno . "): ".$db->connect_error);
}

//Select Database
if (!$db->select_db ($dbname)) {
die("Could not select Database ".$dbname);
}

Dann die Abfrage nach den Nicknamen (auf deine Weise). $array enthält nun alle Einträge der Tabellenspalte "nickname" und du kannst sie nach deinem nickname durchsuchen:

$res = $db->query("SELECT * FROM tabelle");
$array = array();

while ($row = $res->fetch_assoc()) {
    array_push($array,$row["nickname"]);
}

Und hier die bessere Version, bei dem die Datenbank das direkt macht ($nick muss den gesuchten Nickname beinhalten):

$res = $db->query("SELECT * FROM tabelle WHERE nickname = '$nick' ");
$row = $res->fetch_assoc();
if($row != null) {
    //nickname gefunden
}
Kommentar von BeerenFischer ,

Vielen Dank, werde es gleich ausprobieren.

Kommentar von Gegengift ,

Und hats geklappt?

Keine passende Antwort gefunden?

Fragen Sie die Community