php-Zugriff auf mysql funktioniert nicht?

Ich habe folgende Funktion in PHP geschrieben:

function getName($id) {
                global $conn;
                $sql = "SELECT Vorname, Nachname FROM mitglieder WHERE ID = `$id`";
                $result = $conn->query($sql);
                if ($result->num_rows > 0) {
                    $row = $result->fetch_assoc();
                    return $row['Vorname'] . " " . $row['Nachname'];
                } else {
                    return "";
                }
            }

Aber aus irgendeinem Grund kommt immer folgende Fehlermeldung:

Warning: Attempt to read property "num_rows" on bool in C:\xampp\htdocs\***********.php on line 35

Diese Variable $conn funktioniert aber an anderer Stelle im globalen Code außerhalb dieser Funktion einwandfrei wie gewünscht und ich sehe vom Code her keinen nennenswerten Unterschied.

Was ich bereits versucht habe:

  • $conn als Parameter an die Funktion zu übergeben
  • $conn in der Funktion selber zu definieren
  • $conn in der Funktion selber definieren und dass $conn im globalen Code entfernen
  • ChatGPT nach dem Fehler fragen
  • Folgende Fehlerabfrage einzubauen (dabei war $conn auch in der Funktion selber und NUR in der Funktion selber definiert):
if ($conn->connect_error) {
                die("Serverfehler: " . $conn->connect_error);
            }

Das führte aber nur zu folgender Fehlermeldung:

Warning: Attempt to read property "connect_error" on null in C:\xampp\htdocs\*********.php on line 26

Hat alles nichts geholfen. Wisst ihr wo der Fehler liegt?

...zur Frage

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.

...zur Antwort

Hallo Creepypasta7,

zuerst einmal möchte ich sagen, dass ich es wirklich tolle finde, dass Du hier so offen über das alles schreibst und Dir den Rat von anderen einholen möchtest. Nun aber zu Deiner eigentlichen Frage.

Es gibt viele verschiedene Wege Dich zu motivieren. Das wichtigste ist denke ich, dass Du verstehst, dass Du Deine Ziele nie erreichen wirst, wenn Du nicht irgendwann den Anfang machst.

Dieses "Aufschieben" ist meiner Meinung nach der Hauptgrund, warum so viele Menschen Ihre Ziele nicht erreichen. Viele Menschen denken leider viel zu viel über alles mögliche nach anstatt es einfach anzupacken und loszulegen.

Vielleicht hilft es Dir, wenn Du mal im Internet nach Videos mit Interviews suchst, von Leuten die in Ihrem Leben weit gekommen sind. Du wirst feststellen, dass all diese Menschen wirkliche "Macher" sind die ihr Leben in die Hand nehmen und versuchen, aus jeder Situation das Beste zu machen.

Wenn Du gern liest dann ich Dir das Buch "Grenzenlose Energie ( Das Power Prinzip ) von Anthony Robbins empfehlen. Das Buch ist zwar schon einige Jahre alt, trifft aber immer noch mit allem den Nagel auf den Kopf. Ich selbst habe dieses Buch schon mehrere male gelesen einfach weil es mir immer wieder hilft, mich zu motivieren.

Ich wünsche Dir auf jeden Fall alles Gute für Deine Zukunft und bin davon überzeugt, dass Du alle Deine Ziele erreichst, wenn Du nur den ersten Schritt machst. Du kannst alles in Deinem Leben erreichen wenn Du es wirklich willst. Alles Gute und viel Erfolg für Dich :-)

...zur Antwort

Hallo IsjajutxXx,

zuerst möchte ich mal schnell loswerden, dass ich es wirklich toll finde, dass Du hier so offen über Deine Ängste und Bedenken schreibst. Wirklich klasse.

Nun aber zu Deiner Frage. Wenn ich ganz ehrlich bin dann denke ich nicht, dass Du Dir über dieses Thema Gedanken machen musst. Nur weil Dein Freund bzw. zukünftiger Freund bereits seine Jungfräulichkeit verloren hat bedeutet das nicht zwangsläufig, dass er beim Sex mit Dir an seine Exfreundin denken wird oder das ihm der Sex mit ihr besser gefallen hat.

Das ganze was das Sexuelle betrifft hat so viel mehr mit gegenseitiger Nähe und den Gefühlen zu einander zu tun als mit irgendwelchen Techniken oder sonst was. Ich verstehe, dass Du Dir diese Sorgen machst aber ich kann Dir mit Sicherheit sagen, dass Deine Bedenken unbegründet sind.

Versuch wirklich Dir keine Gedanken darüber zu machen und was noch viel wichtiger ist, ist das Du Dich nicht zu irgendwas gezwungen fühlst nur weil er bereits Sex hatte und Du noch nicht. Lass die ganze Sache auf Dich zukommen und schlaf wirklich erst dann mit ihm, wenn für Dich der richtige Moment gekommen ist.

Er wird bestimmt verstehen, dass Du unsicher bist und vielleicht Angst davor hast etwas falsch zu machen. Wenn er Dich aber wirklich liebt dann wird das alles für ihn keine Rolle spielen. Das "erste mal" ist einfach nur eine wundervolle Sache die Du Dein ganzes Leben lang vermutlich nicht vergessen wirst. Es wäre schade, wenn sich zu dieser besonderen Situation negative Gefühle einmischen würden.

Wir alle waren vor unserem ersten mal aufgeregt und wir hatten alle keine Ahnung, was wir da wirklich machen. Trotzdem bin ich sicher, dass es wirklich unvergesslich für Dich wird.

Versuch die ganze Sache nicht so ernst zu nehmen und mach Dir vor allem keine Gedanken darum, ob Du irgendwas falsch machen könntest oder so. Lass Dir Zeit mit der ganzen Sache und wenn es so weit ist, dann lass Dich einfach darauf ein ohne irgendwas zu denken. 

Ich bin sicher, dass eine tolle Zeit auf Dich wartet die hoffentlich viel Gefühl und Spaß mit sich bringt. Ich wünsche Dir alles Gute und wünsche Dir wirklich, dass Du Dich nicht so sehr verrückt machst.

...zur Antwort

Zuerst einmal möchte ich sagen, dass ich es echt lobenswert finde das Du Dir Gedanken um diese ganze machst. Ich betreibe selbst eine kleine Bäckerei und gerate leider immer wieder an Leute die sich offensichtlich überhaupt keine Gedanken machen und das alles nur tun weil sie irgendwas machen müssen oder so. Und genau aus diesem Grund denke ich, dass Du die wichtigste Voraussetzung schon erfüllst. Du möchtest das alles wirklich und das ist sehr wichtig. Was die Arbeit an sich oder besser gesagt Deine eigentliche Frage betrifft kann ich Dir nur empfehlen wirklich Aufmerksam zu sein und vor allem sauber zu arbeiten. Du darfst nicht vergessen das Du mit Lebensmitteln arbeitest und das Sauberkeit mit das wichtigste in solch einem Unternehmen ist. Wichtig ist auch das Du aufmerksam bist und Dich an alle Arbeiten dran traust. Jeder macht Fehler und das ist auch völlig ok so. Aber Du solltest auf jeden Fall keine Angst haben irgendwas falsch zu machen oder so. Guck Dir das alles an und versuche Dich so gut es geht in das Team zu integrieren. Wenn Du irgendwas nicht richtig verstehst dann frag einfach nach. Sei einfach von Anfang an offen für alles was Dir entgegen gebracht wird und versuch das was Dir gezeigt wird so gut es geht umzusetzen. Und wenn mal gerade keine Arbeit für Dich da ist dann such Dir welche. In einer Bäckerei gibt es immer etwas zu tun. Und selbst wenn Du nur mal einen Besen in die Hand nimmst und fegst ist das immer noch besser als mit den Händen in der Tasche irgendwo zu stehen und nichts zu tun. Du solltest auf jeden Fall versuchen ganz entspannt an die Sache ran zu gehen. Gerade die kleinen Bäckereien sind immer auf der Suche nach guten Mitarbeitern. Und dabei geht es selten um die Fähigkeiten die man mitbringt sondern vielmehr um den Willen etwas lernen zu wollen. Ich drücke Dir auf jeden Fall die Daumen für Deine Probewoche und wünsch Dir viel Glück bei allem was vor Dir liegt.

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.