Matthias: MySQL

Hallo, ich habe eine Frage zu folgendem Quelltext:

Via echo ausgegeben hat die Variable $id den Wert 50.
In der Tabelle kunden gibt es einen Eintrag in der Spalte nr mit dem Wert 50.
nr ist mein autoincrementierter Primärschlüssel.
Eine Verbindung zur DB ist hergestellt sonst bekäm ich einen früheren Fehler.

.
.
.
$abfrage = "SELECT * FROM kunden WHERE nr='$id'";
$ergebnis= mysql_query($abfrage,$link) or die ("Fehler.");
.
.

Meine Frage:

Wieso kriege ich da immer nur einen Fehler ausgegeben?

Hilfe und Danke, Matthias

  1. Nabend,

    $abfrage = "SELECT * FROM kunden WHERE nr='$id'";

    16.14. Warum soll ich nicht SELECT * schreiben?
    http://www.dclp-faq.de/q/q-sql-select.html

    $ergebnis= mysql_query($abfrage,$link) or die ("Fehler.");

    Warum lässt du dir auch nur ein wenig-sagendes "Fehler" ausgeben und nicht zB mysql_error()?

    Bis denne,

    1. Nabend,

      mit dem mysql_error war schonmal gut.

      Er bemängelt das index='50' .
      Ich frage mich nur warum, schließlich mach ich die Bedingung doch immer nach diesem Muster... sind die Hochkommata falsch ?

      Zu dem *:
      Ich brauche tatsächlich alle Spalten. Es ist natürlich unschön, aber
      wenns dann mal funktioniert kann ich das immernoch in eine Funktion auslagern, dort sauber schreiben und dann von überallher benutzen.
      Jetzt will ich nur mein Proggi testen.

      Grüße, Matthias

      1. meine natürlich das nr='50' , es ist mein index

        1. Hello,

          wie lautet denn die Fehlermeldung genau?
          Und bitte auch das Statement dazu.

          Und wenn sich das Problem erledigr hat, bitte die Lösung des Rätsels :-)

          Grüße

          Tom

      2. hi,

        Er bemängelt das nr='50' .
        Ich frage mich nur warum, schließlich mach ich die Bedingung doch immer nach diesem Muster... sind die Hochkommata falsch ?

        wenn nr in deiner tabellendefinition einen nummerischen typ hat, warum vergleichst du es dann wie einen string?

        gruss,
        wahsaga

        1. Hallo,

          ja schon klar, ist halt meine standard bedingung mit hochkommata, aber selbst ohne macht er nix, ich hab schon zig schreibweisen durch:

          ( nr=50 )
          ( nr='50')
          nr=50
          nr='50'

          Aber immer nur der Fehler:

          You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'nr='55'' at line 1

          1. Also ich bin einen Schritt weiter...

            wenn ich die Schreibweise:

            'nr'=50 oder
            'nr'='50'

            benutze geht er weiter, zum nächsten Fehler "Keine Objekte gefunden."
            Heul. Dabei sehe ich es doch auf dem Schirm im pypMyAdmin das es da ist.

  2. hi,

    $abfrage = "SELECT * FROM kunden WHERE nr='$id'";

    versuch mal folgendes.

    $abfrage = "SELECT * FROM kunden WHERE nr=".$id;

    Ilja

  3. Hello,

    heißt Deine Spalte nun "nr" oder "index" ?

    Index ist ein geschütztes Wort in SQL. So darf keine Spalte heißen.

    http://www.mysql.com/doc/de/Reserved_words.html

    Grüße

    Tom