Hallo,
ich bin mir nicht ganz sicher, wo der Fehler genau liegt aber ich würde an Deiner Stelle mal folgendes versuchen:
1. In der getName-Funktion sollte bei der Definition der $sql-Variable um die $id-Variable herum keine `-Zeichen verwenden werden. Ich gehe davon aus, dass es sich bei der Id um einen numerischen Wert handelt, weshalb Du auf die `-Zeichen verzichten kannst. Du solltest in der Funktion allerdings vorab sicherstellen, dass der $id-Parameter als numerischer Wert übergeben wurde.
2. Die Meldung, die bei der $conn->connect_error-Abfrage ausgegeben wird, deutet daraufhin, dass die Verbindung zur Datenbank nicht erfolgreich hergestellt wurde. Ich würde hierzu, wie Du bereits geschrieben hast, einfach versuchen, die ganze Sache in der Funktion mit $conn = new mysqli($servername, $username, $password, $dbname); zu definieren.
3. Abschließend noch ein allgemeiner Hinweis. Um Probleme mit SQL-Injection zu vermeiden, würde ich Dir empfehlen Prepared-Statements zu verwenden. Der Code dazu ist zwar etwas aufwändiger, wird aber dadurch auch deutlich sicherer. Ich habe hierzu auch mal Chat-GPT befragt und habe diesbezüglich das folgende Code-Beispiel erhalten:
function getName($id) {
global $conn;
$sql = "SELECT Vorname, Nachname FROM mitglieder WHERE ID = ?";
$stmt = $conn->prepare($sql);
if ($stmt === false) {
die("Prepare failed: " . $conn->error);
}
$stmt->bind_param("i", $id); // 'i' for integer, use 's' for string
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
return $row['Vorname'] . " " . $row['Nachname'];
} else {
return "";
}
}
Vielleicht kannst Du diese Funktion ja einfach mal ausprobieren. Es würde mich interessieren, ob die ganze Sache so funktioniert.