Yadgar: WARUM SCHAFFE ICH DAS NICHT???!!!???

Hi(gh)!

Ich will programmieren, programmieren, programmieren... aber ich bin anscheinend zu dumm dazu!

Kaum konnte ich ein Problem (mit Eurer Hilfe) lösen, türmt sich das nächste vor mir auf...

Zum Beispiel das hier:

$query = 'SELECT ID FROM hersteller WHERE Firmenname ='".mysql_real_escape_string($_POST['Hersteller']).";

in $_POST['Hersteller'] steht ein String, der Whitespace enthält... egal, wie ich die Anführungszeichen und Hochkommata in der Zuweisung zu $query setze, ich bekomme entweder die Fehlermeldung "Unknown item "ID" in field list", mir wird der Stringteil nach dem ersten Whitespace als Fehlerquelle um die Ohren gehauen oder der Bildschirm bleibt gleich weiß.

Ich bin mit meinem Latein am Ende!

Ich bin kurz davor, meinen Computer zu Klump zu treten und solange nach dem Notarzt zu schreien, bis ich abgeholt werde...

  1. $query = 'SELECT ID FROM hersteller WHERE Firmenname ='".mysql_real_escape_string($_POST['Hersteller']).";

    mit dem ." nach mysql_real_escape_string hast du ein Offenes String-Literal das niemals geschlossen wird.

    So würde es passen:
    $query = "SELECT ID FROM hersteller WHERE Firmenname ='".mysql_real_escape_string($_POST['Hersteller'])."';";

    Übersichtlicher wäre wohl:
    $query = sprintf("SELECT ID FROM hersteller WHERE Firmenname = '%s';", mysql_real_escape_string($_POST['Hersteller']));

    Und am besten wäre wohl die Verwendung von Prepared Statements. Warum? Du musst dich nicht selbst ums Maskieren kümmern und so wie es aussieht vermute ich mal, dass du noch die mysql- statt mysqli-/PDO-Extension verwendest (reine Spekulation).

    MfG
    bubble

    --
    If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
    1. Hi(gh)!

      So würde es passen:
      $query = "SELECT ID FROM hersteller WHERE Firmenname ='".mysql_real_escape_string($_POST['Hersteller'])."';";

      Nein, leider auch nicht... ich bekomme wieder die Meldung:

      1054: Unknown column 'ID' in 'field list'

      Und am besten wäre wohl die Verwendung von Prepared Statements. Warum? Du musst dich nicht selbst ums Maskieren kümmern und so wie es aussieht vermute ich mal, dass du noch die mysql- statt mysqli-/PDO-Extension verwendest (reine Spekulation).

      Ach du meine Güte... PHP 5.x kann mein gemieteter Server nur, wenn ich mit .htaccess arbeite - und *das* Fass auch noch aufzumachen, das ist nun wirklich zuviel für mich!

      Warum ist Programmieren so elend, elend, elend schwer?

      1. Mahlzeit,

        Ach du meine Güte... PHP 5.x kann mein gemieteter Server nur, wenn ich mit .htaccess arbeite - und *das* Fass auch noch aufzumachen, das ist nun wirklich zuviel für mich!

        Und den Testserver aufsetzen willst du nicht, weil du dann ewinmal das machen würdest, was dir hier geraten wurde?

        Warum ist Programmieren so elend, elend, elend schwer?

        Weil Tutorials und Manpages mit dem Hintergrund geschrieben werden, dass sie beachtet werden. Da du nicht das tust, was dir gesagt wird, ist es völlig unmöglich, dass du irgendwann mal programmieren lernst.

        --
        eigentlich ist mir bewusst, dass ich hin und wieder einfach mal die Klappe halten sollte. Doch genau in den unpassendsten Momenten erwische ich mich dabei, wie ich dennoch etwas sage ...
    2. Hi,

      $query = 'SELECT ID FROM hersteller WHERE Firmenname ='".mysql_real_escape_string($_POST['Hersteller']).";
      mit dem ." nach mysql_real_escape_string hast du ein Offenes String-Literal das niemals geschlossen wird.

      Nein. Das String-Literal beginnt mit dem ' vor dem SELECT, endet mit dem ' nach dem =. Danach steht völlig unmotiviert ein weiteres Stringliteral, das mit dem " vor .mysql beginnt und mit dem " vor dem ; endet.

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. $query = 'SELECT ID FROM hersteller WHERE Firmenname ='".mysql_real_escape_string($_POST['Hersteller']).";
        mit dem ." nach mysql_real_escape_string hast du ein Offenes String-Literal das niemals geschlossen wird.

        Nein. Das String-Literal beginnt mit dem ' vor dem SELECT, endet mit dem ' nach dem =. Danach steht völlig unmotiviert ein weiteres Stringliteral, das mit dem " vor .mysql beginnt und mit dem " vor dem ; endet.

        Das hab ich auch übersehen, Syntaxhighlighting macht schon 'ne Menge aus :'D

        MfG
        bubble

        --
        If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
  2. Hallihallo!

    Da der Tipp von bubble anscheinend keine Besserung gebracht hat, von mir mal ein Schuss ins Blaue:
    Wäre es möglich, dass die Spalte in Deiner Tabelle nicht "ID", sondern vielleicht "Id" oder "id" heisst? Die Feldnamen in MySQL sind case-sensitive, so ein Tippfehler hat mich auch mal fast um den Verstand gebracht...

    Beste Grüsse,
        Tobias Hahner

    1. Hi(gh)!

      Wäre es möglich, dass die Spalte in Deiner Tabelle nicht "ID", sondern vielleicht "Id" oder "id" heisst? Die Feldnamen in MySQL sind case-sensitive, so ein Tippfehler hat mich auch mal fast um den Verstand gebracht...

      Nein, ich habe nachgesehen, sie heißt tatsächlich "ID"!

      Bis bald im Khyberspace!

      Yadgar

      1. Hi,

        hast du vielleicht einen Tippfehler in der Tabelle hersteller?

        Gruß
        Jan

        1. hast du vielleicht einen Tippfehler in der Tabelle hersteller?

          Was für einen Tippfehler?

          1. ist der Name der Tabelle hersteller richtig geschrieben, wenn es die Tabelle hersteller "nicht gibt" kann er dort ID auch nicht finden, auch wenn ID richitg ist...

            1. Hi(gh)!

              ist der Name der Tabelle hersteller richtig geschrieben, wenn es die Tabelle hersteller "nicht gibt" kann er dort ID auch nicht finden, auch wenn ID richitg ist...

              Nein, die Tabelle heißt tatsächlich "hersteller" - da ist nichts falsch geschrieben! Ich bin ratlos...

              Bis bald im Khyberspace!

              Yadgar

              1. Hallo

                ist der Name der Tabelle hersteller richtig geschrieben, wenn es die Tabelle hersteller "nicht gibt" kann er dort ID auch nicht finden, auch wenn ID richitg ist...

                Nein, die Tabelle heißt tatsächlich "hersteller" - da ist nichts falsch geschrieben! Ich bin ratlos...

                Dagegen könntest du etwas tun. Zum Beispiel, indem du endlich beginnst, die gegebenen Lösungsansätze durchzuackern und zumindest die offensichtlichen Fehler zu beseitigen. Eine beseitigter Fehler an einer Stelle ist eine beseitigte Fehlerquelle für etwaige Folgefehler an anderer Stelle.

                Tschö, Auge

                --
                Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                Terry Pratchett, "Wachen! Wachen!"
                ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                Veranstaltungsdatenbank Vdb 0.3
  3. Hi,

    Ich will programmieren, programmieren, programmieren... aber ich bin anscheinend zu dumm dazu!

    Naja, Du ignorierst offensichtlich die Tipps, die Dir gegeben werden.

    ich bekomme entweder die Fehlermeldung "Unknown item "ID" in field list"

    Dann wird die Spalte in der Datenbanktabelle Hersteller nicht existieren.

    oder der Bildschirm bleibt gleich weiß.

    Dir wurde mehrfach gesagt, daß Du PHP erstmal so konfigurieren solltest, daß alle Fehlermeldungen vernünftig angezeigt werden.
    Abgesehen davon: Schon mal mit View Source in Deinem Browser geguckt?

    Ich bin mit meinem Latein am Ende!

    Das muß doch wohl eher heißen: Cum Latinum meum ad finitem sum.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  4. Hallo,

    Ich will programmieren, programmieren, programmieren... aber ich bin anscheinend zu dumm dazu!

    Das eigentliche Programmieren (Programmcode schreiben) nimmt vom Zeitbedarf nur einen Bruchteil ein. Wichtiger sind vorallem Planen und Debuggen, je besser man plant, desto weniger debuggen. Über deine Planung kann ich nichts sagen, aber das Debuggen solltest du dir dringend aneignen.

    Gruß
    Kalk

  5. Mahlzeit,

    Ich bin kurz davor, meinen Computer zu Klump zu treten und solange nach dem Notarzt zu schreien, bis ich abgeholt werde...

    Da du immer noch alles ignorierst, was dir mit auf den Weg gegeben wird, ist das wohl für alle das Beste. Irgendwie bestätigt sich grad mein Eindruck, dass du genau das Gegegenteil von dem machst, was dir geraten wird, nur damit du dann deine Depression hier füttern kannst.

    --
    eigentlich ist mir bewusst, dass ich hin und wieder einfach mal die Klappe halten sollte. Doch genau in den unpassendsten Momenten erwische ich mich dabei, wie ich dennoch etwas sage ...
    1. Hi,

      Ich bin kurz davor, meinen Computer zu Klump zu treten und solange nach dem Notarzt zu schreien, bis ich abgeholt werde...

      Wenn du dich so schwer damit tust – warum machst du es dann eigentlich?

      Dir wurde hier schon einige Male erklärt, wie man sich solchen – zumeist eher trivialen – Problemen logisch annähert, und wie man sinnvolles Debugging betreibt. Und trotzdem kommst du hier regelmäßig wieder mit solchen Dingern an, wo du, entschuldige den Ausdruck, wie der sprichwörtliche „Ochs vor’m Berg“ zu stehen scheinst und offenbar keinerlei Idee oder auch nur den geringsten Ansatz hast, wie sich der Fehler eingrenzen ließe.

      Wenn also sämtliche Versuche hier, dir ein bisschen grundlegende Debug-Techniken bei zu bringen, offenbar auf ziemlich fruchtlosen Boden fallen, und du vor jedem neuen Fehler auf’s neue kapitulieren und verzweifeln musst – dann wird es vielleicht irgendwann mal Zeit der Tatsache ins Auge zu blicken, dass Programmieren eventuell nicht das richtige für dich ist …?

      MfG ChrisB

      --
      Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
      1. Oops,

        jetzt habe ich es doch tatsächlich geschafft, das an der falschen Stelle zu platzieren …

        Das Vorherige war natürlich an Yadgar gerichtet, und nicht an M.

        MfG ChrisB

        --
        Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
  6. Hi,

    bei Probleme mit SQL, geh ich immer so vor:
    ich gebe mit echo $sql den SQL Befehl aus (am besten unter cli) . Kopiere ihn 1:1 und teste ihn in phpmyadmin (SQL).
    Dort wird mir dann der Fehler angezeigt :-)
    Meistens sinds Tippfehler.

    Viele Grüße aus LA

    --
    ralphi
  7. ich bekomme entweder die Fehlermeldung "Unknown item "ID" in field list",

    also meiner ansicht nach sagt diese fehlermeldung erst mal, dass es ein element ID in der tabelle hersteller nicht existiert.

  8. hi Yadgar,

    Hi(gh)!

    Ich will programmieren, programmieren, programmieren... aber ich bin anscheinend zu dumm dazu!

    Programmieren heißt zu lernen, immer nur einen kleinen Schritt nach dem anderen zu machen, und zwar so, dass man in jedem Fall den Fehler finden kann. Zb.: liegts am übergebenen Parameter oder liegts an der Datenbank (dass sie da keinen Eintrag hat). Erst also mit einem festen Parameter testen, obs geht. Wenn das geht, und es geht nicht mehr mit einem übergebenen, liegts an zweiterem ...; etc.pp..

    mfg

    tami

    1. Moin,

      Programmieren heißt zu lernen, immer nur einen kleinen Schritt nach dem anderen zu machen, und zwar so, dass man in jedem Fall den Fehler finden kann.

      das ist eine gute und probate Methode; wichtig ist aber auch, logisch vorzugehen und zu verstehen, was der jeweilige Code (d.h. der gerade betrachtete Schritt, die gerade betrachtete Anweisung) genau tut. Versteht man das nicht, kann man auch kaum beurteilen, ob das Teilergebnis dieses Schrittes richtig ist.

      Und das ist auch der Grund, warum es gerade für Einsteiger immer wieder problematisch ist, fertige Codefragmente zu übernehmen, ohne sie wirklich zu verstehen. Sie können oft nicht abschätzen, was der Code für Nebenwirkungen hat, und warum er in ihrem speziellen Fall vielleicht ungeeignet ist.
      Übernimmt man vollständige, komplett ausgetestete Scripte, kommt man zwar deutlich besser weg - aber sobald kleine Änderungen gewünscht sind, steckt man vielleicht doch wieder in der Klemme.

      Dagegen hilft nur Routine. Das heißt, immer wieder an kleinen Beispielen selbst üben (auch üben, Fehler zu finden), und dazu gehört oft auch das Lesen (und Verstehen) von Dokumentationen. Das ist manchmal ziemlich dröge, aber zwei Stunden Ausprobieren können manchmal locker zehn Minuten Nachlesen ersetzen.

      Zb.: liegts am übergebenen Parameter oder liegts an der Datenbank (dass sie da keinen Eintrag hat). Erst also mit einem festen Parameter testen, obs geht. Wenn das geht, und es geht nicht mehr mit einem übergebenen, liegts an zweiterem ...; etc.pp..

      Oder liegt's an einem schlichten Syntaxfehler, oder einer falschen Verschachtelung (Klammern, Anführungszeichen), oder einem simplen Tippfehler ...

      Schönes Wochenende,
       Martin

      --
      F: Wer waren die ersten modernen Politiker?
      A: Die Heiligen drei Könige. Sie legten die Arbeit nieder, zogen teure Klamotten an und gingen auf Reisen.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hallo,

        aber zwei Stunden Ausprobieren können manchmal locker zehn Minuten Nachlesen ersetzen.

        oder auch tagelanges rumgugeln...

        Gruß
        Kalk

    2. Hi(gh)!

      Programmieren heißt zu lernen, immer nur einen kleinen Schritt nach dem anderen zu machen, und zwar so, dass man in jedem Fall den Fehler finden kann. Zb.: liegts am übergebenen Parameter oder liegts an der Datenbank (dass sie da keinen Eintrag hat). Erst also mit einem festen Parameter testen, obs geht. Wenn das geht, und es geht nicht mehr mit einem übergebenen, liegts an zweiterem ...; etc.pp..

      Danke für den Tipp, aber...

      Eigentlich wollte ich ja nie ein Computerfreak werden... sondern eigentlich ein alternativer langhaariger Globetrotter, Landkommunarde und Revoluzzer-Sponti! Und natürlich vor allem:

      MIT DEM FAHRRAD NACH AFGHANISTAN!!!

      An die Computerei bin ich nur aus Resignation und Opportunismus geraten... damals, 1984, als nach den Osterferien mein Mathelehrer in der 8b auf die Idee kam, einen BASIC-Trockenkurs einzuschieben! Da ich damals auch noch aus lauter Feigheit diesen kleinbürgerlichen Protestantenzirkus namens "Konfirmation" mitgemacht habe (obwohl ich mit dem Christentum absolut null am Turban hatte, meine religiösen Ambitionen gingen damals eindeutig Richtung Indien!), war natürlich plötzlich auch Geld für einen Commodore 64 da... und in den folgenden 30 Jahren bin ich die Computer nicht mehr losgeworden! Afghanistan ist heute so unbereisbar wie 1984, die Alternativszene trägt längst entweder Schlips und Anzug oder hat sich in paranoiden rechtsradikalen Verschwörungskokolores verrannt... da bleibt als letzte Sinnstiftung nur noch das Programmieren übrig (zumal man sich programmierenderweise auch ein virtuelles Ersatz-Afghanistan im Computer schaffen kann!)... obwohl ich eigentlich gar nicht die richtige Persönlichkeitsstruktur dazu habe! Ich flippe aus, wenn Sachen nach dem elften Anlauf immer noch nicht funktionieren und einem die Maschinen immer neue Knüppel zwischen die Beine schmeißen... Fahrradfahren ist so viel einfacher!

      Der Weg in das Afghanistan meiner Jugendträume führt nur über eine Zeitmaschine, die mich nach Kabul 1967 bringen würde - aber Zeitmaschinen sind physikalisch und logisch unmöglich. Der Weg in das virtuelle Ersatz-Afghanistan (und auch zur Orgel-Datenbank, zum X3D- und VST-basierten Allround-Heimorgelemulator sowie zum virtuellen Heimorgelmuseum) führt über Programmieren, Programmieren und nochmals Programmieren... also versuche ich zu programmieren, obwohl ich es nie richtig gelernt habe!

      1. Aloha ;)

        Ich verfolge deine Posts schon eine ganze Weile und hab lange überlegt, ob ich hier noch antworten soll oder nicht (nachdem ich sachdienlich zum gestellten Problem nichts mehr beizutragen habe). Und hab mich jetzt dazu entschlossen, doch zu antworten.

        Ich muss einigen Antworten in diesem Thread vehement widersprechen, die dir absolute Debug-Unfähigkeit attestieren - und das in einem teils nicht angemessenen Tonfall. Ob das debuggen nun dein Ding ist oder nicht - das kann, muss und will ich nicht beurteilen.

        Es wurde hier oft in die Kerbe geschlagen, dass du mit Problemen kämst, die total einfach zu lösen seien. Es tut mir leid, aber genau das finde ich an diesem Forum gut: Hier kann jeder mit egal wieviel Vorwissen, Können oder Erfahrung kommen und Fragen stellen, es kommt egal auf welche Frage kompetenter Rat und Hilfe. Wäre deine Frage von einem anonymen Pseudonym gekommen, bin ich mir sicher, dass ich keine Reaktionen gesehen hätte wie in diesem Thread. Das finde ich bedenklich, zumal gilt - ich zitiere: Formuliere höflich und wertschätzend.

        Bitte nicht falsch verstehen - auch in diesem Thread wurde zum Glück viel sachliche Hilfestellung gegeben. Es sind nur leider einige sehr unkonstruktive Antworten dabei, die sich teils im Ton versteigen. Wer nur helfen wollte soll sich bitte nicht angesprochen fühlen!

        Manche sollten sich mal Gedanken drüber machen, dass deine Probleme vielleicht manchmal einfach zu lösen sind, oft aber fachlich wichtige Diskussionen und Gedankenspiele anregen, die alle Mitleser weiter bringen. Um das einzusehen, genügt es exemplarisch mal zu schauen, wie viel "fachlich hilfreich"e Antworten auf deinen letzten Thread kamen. Das mag nicht immer so sein, aber wenn das geschieht, steigern deine ach so "einfachen" Probleme den Wert dieses Forums für alle Beteiligten. Ich bin mir sicher, dass einige stille Mitleser von diesen Threads profitieren, da sie exakt dieselben Probleme haben wie du. Kein Grund dich an den Pranger zu stellen.

        Ich empfinde auf eine Art Bewunderung für dich, weil du dir mit dem Programmieren einen Sinn schaffst. Und wenn dus nicht gut kannst oder nie ein Computerfreak werden wolltest - Scheiß drauf. Mach weiter, solang es dir Spaß macht oder du daraus einen Sinn ziehen kannst. Lass dir die Sache nicht kaputtmachen und geh weiter deinen Weg. Ich sage nicht, dass du keine gut gemeinten Ratschläge annehmen sollst - aber in der Frage nach Sinn und Zweck solltest du dich von keinem Miesmacher beirren lassen. Wenn jemand von deiner Art genervt ist, dann soll er deine Threads in Gottes Namen ignorieren, nicht nur antworten um dir ungefragt seine höchst persönliche Meinung über dich vor den Latz zu knallen. Die interessiert nämlich im Gegensatz zu deinen Fragen hier wirklich niemanden.

        Ich jedenfalls bin weiterhin dazu bereit (und mit mir sicher viele andere hier) auch in Zukunft bei Problemen JEDER Art nach bestem Wissen und Gewissen mit Rat und Tat zu unterstützen. Lass dich einfach nicht unterkriegen ;)

        Noch ein ganz persönlicher Ratschlag von mir: Vielleicht ist es hilfreich, wenn deine Thread-Titel weniger von Emotionen als mehr von einer Beschreibung des Problems geprägt sind ;) Das hilft beim Anlocken kompetenter Hilfe ;)

        Grüße,

        RIDER

        P.S.: Sollte sich jemand von mir persönlich angegriffen fühlen, bitte ich das zu entschuldigen. Es entspricht nicht meiner Absicht, irgend jemanden anzugreifen, ich wollte nur meiner Einstellung Ausdruck verleihen. Nicht zuletzt ist das hier einfach meine MEINUNG.

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
        ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
        1. Hi(gh)!

          Aloha ;)

          Ich verfolge deine Posts schon eine ganze Weile und hab lange überlegt, ob ich hier noch antworten soll oder nicht (nachdem ich sachdienlich zum gestellten Problem nichts mehr beizutragen habe). Und hab mich jetzt dazu entschlossen, doch zu antworten.

          Ich muss einigen Antworten in diesem Thread vehement widersprechen, die dir absolute Debug-Unfähigkeit attestieren - und das in einem teils nicht angemessenen Tonfall. Ob das debuggen nun dein Ding ist oder nicht - das kann, muss und will ich nicht beurteilen.

          Es ist ja nicht so, dass ich überhaupt keine Ahnung vom Debuggen hätte - nur ist manuelles Debugging mittels Auskommentieren natürlich mühsam und langwierig (übrigens habe ich auf diese Weise mein Problem aus dem letzten Thread mittlerweile lösen können...).

          Dem von dir kritisierten Phänomen bin ich schon oft in Programmierforen begegnet, superkewler, wahrscheinlich schon in C++ träumender Geek trifft ungeübten Hobbyprogger, der halt nicht jeden Tag 12 Stunden über seinem Code sitzt oder Tutorials durchackert und folglich die meisten Tricks gar nicht kennen kann... da gibt es wirklich Leute, die alle wegmobben, die nicht genauso kewl sind wie sie selbst!

          Bis bald im Khyberspace!

          Yadgar

      2. hi Yadgar,

        ... also versuche ich zu programmieren, obwohl ich es nie richtig gelernt habe!

        Fahrradfahren hast du bestimmt auch nie "richtig" gelernt. Man kann programmieren nicht richtig lernen. Es ist schlicht die Philosophie der kleinen Schritte und die, immer _nur_ _eine_ Sache auf einmal zu ändern und zu testen.

        mfg

        tami