Guma: SQL- Selectabfrage - ist hier while{} nötig?

Hallo zusammen,

ich mache gerade auf einer Detail-Seite eine SQL-Abfrage, die einen Titel und zugehörige Beschreibung ausgeben soll. Meine Abfrage wird jeweils nur ein Ergebnis liefern, da mit WHERE nur der entsprechende Datensatz gelifert wird. (ist ja auch nur eine Detailseite)

Jetzt habe ich mich gefrag ob ich überhaupt eine while-Schleife für die Ausggabe des einzelnen Datensatzes benötige?!

Hier mein PHP-Code:

<?php
error_reporting(E_ALL);
@mysql_connect("localhost", "root", "mypass") OR die(mysql_error());
mysql_select_db("mydata") OR die(mysql_error());
$sql = "SELECT titel,beschreibung FROM kunden WHERE id='$myid'";
// $myid wurde über Get mit Link transportiert und weiter oben im skript definiert (Reg.-Globals--> OFF)

$result = mysql_query($sql) OR die(mysql_error());
echo "Ausgabe:<br />\n";
if(mysql_num_rows($result))
{ // Query mit while-Schleife ausgeben
 while($row = mysql_fetch_assoc($result))
 {
  echo $row['titel'] . '<br>'
     . $row['beschreibung']. '<br><br>';
 }
}
 else
 {
 echo "Es wurde kein entsprechender Datensatz in der Datenbank gefunden<br />\n";
}
?>

Ist die While-Schleife umständlich oder kann ich da viel einfacher vorgehen?

Würde mich freuen wenn ihr mir weiterhelfen könnt.

Grüße von Guma

  1. Hi,

    Jetzt habe ich mich gefrag ob ich überhaupt eine while-Schleife für die Ausggabe des einzelnen Datensatzes benötige?!

    offenbar nicht, oder siehst Du einen Grund dafür?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. echo $begrüßung;

    $sql = "SELECT titel,beschreibung FROM kunden WHERE id='$myid'";
    // $myid wurde über Get mit Link transportiert und weiter oben im skript definiert (Reg.-Globals--> OFF)

    Wenn es nicht auch "weiter oben" auf zulässige Werte überprüft wurde, dann ist das eine Stelle für SQL-Injection. Auf die Funktionalität von Magic Quotes sollte man sich nicht verlassen, das berücksichtigt zu wenig Zeichen und ist außerdem ab PHP6 nicht mehr vorhanden.

    Filtere deine Eingabedaten mit intval(), wenn du, wie in diesem Fall, nur Integerwerte erwartest oder wende mysql_real_escape_string() auf die Daten an.

    echo "$verabschiedung $name";

    1. Danke für die Hinweise, werde ich auf jeden Fall beachten.

      Grüße von Guma

    2. Hallo dedlfix,
      die variablen hole ich so rein...
      <? // Übernahme der Get Global-Variablen für PHP
      if (! ($li_id=$_GET['id'])){$li_id="";}

      // Select-Abfrage
      include_once "config.php";
      @mysql_connect($dbhost, $dbuser, $dbpass) OR die(mysql_error());
      mysql_select_db($dbname) OR die(mysql_error());
      $sql = "SELECT * FROM firma WHERE li_id='$li_id'";

      $result = mysql_query($sql) OR die(mysql_error());

      // Ausgabe funktioniert ohne While bei mir nicht!
      echo $result['li_name'] . '<br>';
      ?>

      Wiso bekomme ich denn keine Ausgabe?

      Grüße von Guma

      1. echo $begrüßung;

        $sql = "SELECT * FROM firma WHERE li_id='$li_id'";
        $result = mysql_query($sql) OR die(mysql_error());
        // Ausgabe funktioniert ohne While bei mir nicht!
        echo $result['li_name'] . '<br>';
        Wiso bekomme ich denn keine Ausgabe?

        Das Abholen der Daten mit einem der Fetch-Befehle solltest du nicht unter den Tisch fallen lassen. Nur das Drumrumlegen der Schleife ist bei einem Ergebnisdatensatz überflüssig.

        echo "$verabschiedung $name";

        1. Das Abholen der Daten mit einem der Fetch-Befehle solltest du nicht unter den Tisch fallen lassen. Nur das Drumrumlegen der Schleife ist bei einem Ergebnisdatensatz überflüssig.

          Danke, ich werde fetch natürlich wieder anfügen und nicht fallen lassen.

          Guma