[Mysqli] aus ID einer Person den Namen abfragen

1) Ich hoffe, deine ID ist eine Zahl. Dann solltest du sie auch als Zahl an die Datenbank übergeben. Entferne die ' bei p.id = '$p_id'
SQL:
WHERE p.id = $p_id

2) Ja, es heisst genau das. myqli_fetch_object gibt ein Objekt zurück, kein Array

3) Lass dir ausgeben, welche ID gesucht wird. Dann wirst du den Fehler schon finden. Die Funktion als solches scheint ja zu funktionieren. Wenn du aber in deiner Stammbaumgenerierung nach UrUrUrGrosselten suchst, die nicht im System erfasst ist, gibt es ein Fehler. Ist ja auch logisch.

Ups, ich sehe da grad noch was. Warum der folgende Codeteil? Wenn etwas funktioniert hat, gibst du ein Error aus? Macht wenig sinn. Da fehlt ein !
PHP:
if (!$ergebnis){//Error}
Und warum fährst du nach dem Fehler einfah fort als ob nix bpassiert ist?

Normalerweise macht man das Konstrukt so:
PHP:
if($result = mysqli_query($db, "SELECT...")){
    $row = mysqli_fetch_object($result);
    echo $row->vorname;
} else {
    //Keine Daten gefunden. ggf Fehler ausgeben
}
 
[3) Lass dir ausgeben, welche ID gesucht wird. Dann wirst du den Fehler schon finden. Die Funktion als solches scheint ja zu funktionieren. Wenn du aber in deiner Stammbaumgenerierung nach UrUrUrGrosselten suchst, die nicht im System erfasst ist, gibt es ein Fehler. Ist ja auch logisch.

Wie kann ich es vermeiden? Ich möchte nicht, dass es ein Fehler anzeigt, sondern dass dann einfach nichts mehr erscheint... Keine Fehlermeldung in dem Sinne, es sollen nur die Generationen bzw. Personen erscheinen, die in der Datenbank abgespeichert sind, ohne irgendwelche Fehlermeldungen.
 
Vielen Dank erstmal, es hat alles geklappt.
Bei dem Fehler
Notice: Trying to get property of non-object in /var/www/html/....

Mein Professor meinte, dass wenn NULL in der Tabelle steht, dass ich das im Skipt definieren muss.
Hat einer eine Idee vielleicht??

Code:
$urgrossvater = vater($db, $grossvater['id']);
function urgrossvater($db, $grossvater_id, $vater_id, $p_id)
{
$urgrossvater = array();
$urgrossvater['id'] = $row->urgrossvater_id;
$urgrossvater['vorname'] = $row->urgrossvater_vorname;
$urgrossvater['nachname'] = $row->urgrossvater_nachname;
return $urgrossvater;

Hier müsste ich im Skript es so definieren, dass auch eventuell KEIN ERGEBNIS rauskommt (weil die Person nicht in der DB angelegt ist). Ich weiß leider nicht wie :(

Danke im Voraus
 
Zurück