Matt LeBlanc: MYSQL + PHP - Wieso bekomme ich immer eine 2 als Haendel ?

Hallo !!!

Mein Problem ist folgendes :::

Ich habe eine Datenbank mit MYSQL. Aus dieser suche ich nach eintraegen
aus dem ersten und zweiten Colmn. Dies klappt auch wunderbar.
Nur wenn er nichts findet bekomme ich auch einen Haendel uebergeben.
Und zwar den gleichen, wie bei einem Treffer.
Woran kann das liegen ???

Hier der Code :::

<html>
<head><title>Web Database Sample Index</title>
</head>
<body bgcolor=#ffffff>
<table border=1>
<?
mysql_connect("localhost", "mk", "");
$query = "SELECT * FROM produktsuche where ( pna LIKE '$gesucht%' ) ";
echo $result;
$result='';
$result = mysql_db_query("produkte", $query);
echo $result;
   if ($result) {
  while ($r = mysql_fetch_array($result)) {
         $nummer = $r["pnr"];
         $name = $r["pna"];
         $q1 = $r["q1"];
         $q2 = $r["q2"];
         $sp = $r["sp"];
         $co = $r["co"];
         $wa = $r["wa"];
         $tr = $r["tr"];
         $ec = $r["ec"];
         $wty = $r["wty"];
         $at = $r["at"];
         $acd = $r["acd"];
         $h04 = $r["h04"];
          $id = $r["ID"];
  echo"<tr><td>$nummer</td><td>$name</td><td>$q1</td><td>$q2</td><td>$sp</td><td>$co
</td><td>$wa</td><td>$tr</td><td>$ec</td><td>$wty</td><td>$at</td><td>$acd</td><td>$h
04</td></tr>\n ";
      }
   } else {
      echo "<tr><td>No data.</td></tr>";
   }
   mysql_free_result($result);
?>
</table>
</body>
</html>

  1. Hallo !!!

    Mein Problem ist folgendes :::

    Ich habe eine Datenbank mit MYSQL. Aus dieser suche ich nach eintraegen
    aus dem ersten und zweiten Colmn. Dies klappt auch wunderbar.
    Nur wenn er nichts findet bekomme ich auch einen Haendel uebergeben.
    Und zwar den gleichen, wie bei einem Treffer.
    Woran kann das liegen ???

    schnipp----aus dem manual von php ..http://www.php.net/manual/function.mysql-query.php3

    mysql_query() returns TRUE (non-zero) or FALSE to indicate whether or not the query succeeded.

    so da stelltsich die frage wann eine querry erfolgreich ausgeführt wird.
    anscheinend bedeutet erfogreich in diesem fall, dass sie keine fehler produziert.
    also ein empty set , sprich, kein ergebniss ist auch true , also auch 2 ( 0 = false alles ausser null = true)

    versuch mal ne ungültiege querry

    also sowas :

    $query = "SELECT * FROM ykfjdghösdkfhg produktsuche where ( pna LIKE '$gesucht%' ) ";

    sollte eigentlich 0 zurückgeben.

    du musst wohl noch ne abfrage mit mysql_num_rows machen, und prüfen ob das 0 ergiebt, so mach ich das immer. klappt ganz gut.

    viel glück
    olli

  2. Hallo Matt,

    Nur wenn er nichts findet bekomme ich auch einen Haendel uebergeben.
    Und zwar den gleichen, wie bei einem Treffer.
    Woran kann das liegen ???

    Das ist richtig so, 0 Zeilen ist auche ein Ergebnis, Du bekommst nur keinen resulthandle, wenn Du z.B. einen SQL-Fehler machst, frage nach dem if($result) einfach noch mysql_numrows($result) ab.

    grüße
    stephan

  3. Danke !!!