Knud Schröder: (MYSQL) Datenbankabfrage erzeugt Fehlermeldung, warum?

Hallo Forummer !

Bin PHP am lernen und bastle mir hierfür mal ein paar einfache Scripts, die man später immer
gebrauchen kann. Da ist aber nun so ein kleines Script, das mir die letzten Ideen klaut, ich finde den
Fehler nicht:

$verbindung = @mysql_connect("localhost","","");
  $e_check = $e_plz.strtoupper(substr($e_strasse,0,5));
  $abfrage = "select * from kunden order by kdnr where check=$e_check";

$erg = mysql_db_query("niedax",$abfrage,$verbindung);

if (mysql_num_rows($erg) < 1) {

Genau bei meiner gekennzeichneten Stelle (wo die Abfrage abgeschickt wird, da krachts es:
     Warning: 0 is not a MySQL result index in c:\httpd\HtDocs/adr_new.php3 on line 13

Aalle Variablen mit $e_irgendwas sind die Formular-Variablen. Die Datenbankfelder sind gleichlautend, nur
ohne 'e_'.

Ohne die Where-Klausel geht's. Aber sobald ich eine dabei habe (obwohl das nicht meiner erste ist...),
dann gibt's wieder die Meldung.

Hat jemand eine Begründung?

  1. Hallo,

    $verbindung = @mysql_connect("localhost","","");

    da du hier ein @ vor dem connect gemacht hast weißt du nicht sicher ob auch der connect zustande kam. auserdem feld dir was ihc hier so sehe die auswahl der datenbank.

    Ich hab da eien kleine funktion dafür:

    function db_connect()
    {
    $hostname="localhost";
    $db_username="xxxx";
    $db_password="xxxx";
    $dbname="xxxx";

    MYSQL\_CONNECT($hostname, $db\_username, $db\_password) or die("FEHLER: Es kann keine Verbindung zum Datenbank Server hergestellt werden!.");  
    mysql\_select\_db("$dbname") or die("FEHLER: Es kann nicht auf die Datenbank Tabelle zugegriffen werden!");  
    

    }

    $e_check = $e_plz.strtoupper(substr($e_strasse,0,5));
      $abfrage = "select * from kunden order by kdnr where check=$e_check";

    das order würde ich nach hinten stellen (siehe unten)

    $erg = mysql_db_query("niedax",$abfrage,$verbindung);

    willst du hier nur test ob der query erfolgreich war? Das würde ihc so lössen: (inkl obener funktion:)

    db_connect();
    $abfrage = "select * from kunden where check=$e_check order by kdnr DESC";

    if($result=mysql_query($abfrage)){
       echo "true";
       while(list($feld1,$feld2,$feld3....)=mysql_Fetch_row($result)){
        #zb.
        echo "<tr><td>$feld1</td></td>$feld2</td usw.</tr>";
       }
    }else{
       echo "False";
    }

    if (mysql_num_rows($erg) < 1) {

    wie gesagt diese zeile bringt meiner ansicht nach nichts.

    lg
    Ludwig

  2. Hi!

    $abfrage = "select * from kunden order by kdnr where check=$e_check";

    wandle dies in folgendes um:

    $abfrage = "select * from kunden order by kdnr where check='$e_check'";

    dann sollte es funzen. Es wird sonst nicht der Inhalt der Variable $e_check im Query an die DB gesandt, sonder "$e_check" als Zeichenkette.

    mfG
    BRAND

    1. Hi!

      Es wird sonst nicht der Inhalt der Variable $e_check im Query an die DB gesandt, sonder "$e_check" als Zeichenkette.

      sorry, da hab ich mich vertan. Es wird schon der Inhalt von $e_check übertragen, allerdings gelangt folgende query zur DB (wenn du die ' wegläßt)

      Annahme: $e_check="test"

      ->...where check=test

      du brauchst aber ...where check='test'

      so, das sollte jetzt stimmen

      mfG
      BRAND