Kai: 3 mal (fast) gleiche Datenbankabfrage (mysql) Zusammenfassen

Ich habe auf einer Seite drei mal (fast) die gleiche Datenbankabfrage in mysql:

1......................

$sql = "SELECT titel FROM table WHERE id='100'";
$result = mysql_query($sql) or die ($sql.'<br>'.mysql_error());
$row = mysql_fetch_object($result);

Ausgabe : $row->titel;

2......................

$sql = "SELECT titel FROM table WHERE id='150'";
$result = mysql_query($sql) or die ($sql.'<br>'.mysql_error());
$row = mysql_fetch_object($result);

Ausgabe : $row->titel;

3......................

$sql = "SELECT titel FROM table WHERE id='180'";
$result = mysql_query($sql) or die ($sql.'<br>'.mysql_error());
$row = mysql_fetch_object($result);

Ausgabe : $row->titel;

Wäre es aber nicht genialler nur eine Datenbankabfrage zu machen und dann irgendwie die 3 Variablen sich anzeigen lassen

  1. Lieber Kai,

    Du suchst "OR" als Verknüpfung in der WHERE-Klausel:

    $sql = "SELECT titelFROMtableWHEREid=100 OR id=150 OR id=180";

    Dein Ergebnis sind dann drei Zeilen, über die Du iterieren musst (sprich: in einer Schleife abarbeiten).

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. So wie ich das jetzt verstehe muss ich sie dann am besten in ein array schreiben, dann kann ich im laufe der Seite sie einfach mit

      ergebniss[1]
      ergebniss[2]
      ergebniss[3]

      ansprechen!

      Kai

      1. Hi!

        So wie ich das jetzt verstehe muss ich sie dann am besten in ein array schreiben, dann kann ich im laufe der Seite sie einfach mit
        ergebniss[1]
        ergebniss[2]
        ergebniss[3]
        ansprechen!

        Wenn du davon ausgehst, dass das Ergebnis (mit einem s) immer für alle Bedingungen drei Datensätze sind, dann geht das so. Wenn jedoch nur 1 oder zwei IDs vorhanden sind, kannst du es nicht mehr zuordnen. Ein ORDER BY war auch nicht in der Abfrage, so dass die Reihenfolge beliebig ist. Alle diese Probleme lösen sich, wenn du die ID ebenfalls abfragst und diese als Array-Key für $ergebnis nimmst.

        Die Bedingung kann man auch mit einem IN() zusamenfassen statt mehrerer ver-OR-ter Vergleiche zu schreiben.

        Und, "or die()" ist keine Fehlerbehandlung sondern eine Seuche. Überleg dir lieber statt der Ausgabe von wichtigen Informationen (mysql_error()) an Besucher, die das gar nichts angeht, die nicht an der Ursache schuld sind und die nichts daran ändern können, könntest du dir überlegen, was du den Besuchern stattdessen bieten kannst, damit sie im Fehlerfall anderweitig an ihr Ziel kommen, statt sie ihrem Schicksal oder der Konkurrenz zu überlassen.

        Lo!