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

...komplette Frage anzeigen

1 Antwort

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
}
Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?