Stefan: MySQL+PHP: UPDATE geht nicht

Hallo,

hier ein kleiner Ausschnitt aus meinem Skript:

$eintrag_aendern=mysql_query("UPDATE mgtv_tabelle_fussball_02 SET anzahl='$anzahl', gegenstand='$gegenstand', zustaendiger='$zustaendiger', $bemerkung='$bemerkung' WHERE position='$position'");

Was ist daran falsch? Es kommt keine Fehlermeldung, der If-Block wird abgearbeitet, die Daten kommen alle an (alles überprüft) - die Daten in der Datenbank werden aber nicht aktualisiert?!

Bitte helft mir!

Viele Grüße
Stefan

  1. Hallo,

    hier ein kleiner Ausschnitt aus meinem Skript:

    $eintrag_aendern=mysql_query("UPDATE mgtv_tabelle_fussball_02 SET anzahl='$anzahl', gegenstand='$gegenstand', zustaendiger='$zustaendiger', $bemerkung='$bemerkung' WHERE position='$position'");

    Was ist daran falsch? Es kommt keine Fehlermeldung, der If-Block wird abgearbeitet, die Daten kommen alle an (alles überprüft) - die Daten in der Datenbank werden aber nicht aktualisiert?!

    Bitte helft mir!

    hmmmm, by the way: ich hatte schon Probleme wenn ich zahlen einsetzen wollte und die in 'hochkommas' gesetzt habe... bei zB anzahl oder?
    Vielleicht hilfts ja... warum schreibst du überhaupt
    "$eintrag_aendern=mysql_query("UPDATE ..."
    also ich meine was soll die Variable ($eintrag_aendern) da? Du bekommst bei nem Update doch eh nix wieder. Wird wohl nen copy&Paste fehler von nem SELECT Statement sein, nimm das doch auch mal raus...

    Viele Grüße
    Stefan

    1. Hallo,

      ich hab das jetzt geändert wie du gemeint hast - es geht trotzdem nicht :(

      mysql_query("UPDATE mgtv_tabelle_fussball_02 SET anzahl=$anzahl, gegenstand=$gegenstand, zustaendiger=$zustaendiger, bemerkung=$bemerkung WHERE position=$position");

      Viele Grüße
      Stefan

      1. Hallo, Stefan

        vielleicht solltest Du mal überprüfen, ob Du die richtige Verbindung zu Deiner DB hast. Das geht aus Deinem Codeschnipsel nicht hervor.

        Gruß Frank

        1. Hallo, Stefan

          vielleicht solltest Du mal überprüfen, ob Du die richtige Verbindung zu Deiner DB hast. Das geht aus Deinem Codeschnipsel nicht hervor.

          Gruß Frank

          Das Abfragen und Lesen zumindest geht!

          Hier trotzdem der Ausschnitt:

          $link_db=mysql_connect("mysql1.webpack.hosteurope.de", $benutzer, $passwort );
          if(!$link_db) die("Keine Verbindung zu MySQL");
          mysql_select_db($db, $link_db) or die("Datenbank konnte nicht geöffnet werden!");
          if(isset($gegenstand) && isset($anzahl) && isset($zustaendiger) && isset($neu) && $neu=="ja"){
              $neuer_eintrag=mysql_query("INSERT INTO mgtv_tabelle_fussball_02 (anzahl, gegenstand, zustaendiger, bemerkung, eintrag) VALUES ('$anzahl', '$gegenstand', '$zustaendiger', '$bemerkung', '$eintrag')");
              $neu="nein";
          }elseif($neu=="aenderung_eintragen"){
              mysql_query("UPDATE mgtv_tabelle_fussball_02 SET (anzahl=$anzahl, gegenstand=$gegenstand, zustaendiger=$zustaendiger, bemerkung=$bemerkung WHERE position=$position");
              $neu="nein";
          };
              $ergebnis=mysql_query("SELECT * FROM  mgtv_tabelle_fussball_02 ORDER BY position");
          if(isset($neu) && isset($position) && $neu=="aendern"){
              $ergebnis_aendern=mysql_query("SELECT * FROM  mgtv_tabelle_fussball_02 WHERE position='$position'");
              $aenderung = mysql_fetch_array($ergebnis_aendern);
          };
              mysql_close($link_db);

          1. Hi,
            eventuell liegts an der Klammer?
            Set ist ausserhalb der Klammer, aber die gleichberechtigte Where-Anweisung drin.

            Probier mal

            mysql_query("update mgtv_tabelle_fussball_02 set (anzahl='$anzahl', gegenstand='$gegenstand', zustaendiger='$zustaendiger', bemerkung='$bemerkung') where position like '$position'");

            Viele Grüsse

            1. Hi,
              eventuell liegts an der Klammer?
              Set ist ausserhalb der Klammer, aber die gleichberechtigte Where-Anweisung drin.

              Probier mal

              mysql_query("update mgtv_tabelle_fussball_02 set (anzahl='$anzahl', gegenstand='$gegenstand', zustaendiger='$zustaendiger', bemerkung='$bemerkung') where position like '$position'");

              Viele Grüsse

              -> Nein, das bringt's auch nicht...

              Ich hab nun mal die ganze Seite als TXT-Datei online gestellt:
              http://www.example.org/stefan/tabelle_gegenstand.txt

              Hilfe!!!

              Viele Grüße
              Stefan R.

              1. Hallo Stefan

                »» mysql_query("update mgtv_tabelle_fussball_02 set (anzahl='$anzahl', gegenstand='$gegenstand', zustaendiger='$zustaendiger', bemerkung='$bemerkung') where position like '$position'");

                Ich habe den Update meiner Tabelle so bewerkstelligt:
                $result=mysql_query("update entries set paper_title='$paper_title',paper_title_format='$paper_title_format',author='$author',
                                                            author_format='$author_format',journal='$journal',journal_format='$journal_format',
                                                            year='$year',year_format='$year_format',volumn='$volumn',volumn_format='$volumn_format',
                                                            pages='$pages',pages_format='$pages_format',paper_pdf='$paper_pdf' where
                                                            user_nr='$user_nr' and entry_nr='$entry_nr';");

                Ziemlich langer Wurm, ich weiß, aber das klappt auch bei mir. Um das SQL zu überprüfen, copy&paste das mal in einen SQL-Editor wie MyAdmin, damit kannst du dann den Syntax überprüfen (muß ja nicht so lang sein und Du mußt natürlich auch die Variablen mit Werten ersetzen).
                Zwei Unterschiede fallen mir ad hoc auf, Du benutzt eine Klammer nach 'set' und am Ende der SQL Anweisung habe ich noch ein ; gesetzt. Ob letzeres wichtig ist kann ich Dir nicht sagen.

                So, ich hoffe ich konnte Dir helfen, viele Grüße aus einem sonnigen Graz..

                Sassy

                1. mysql_query("update mgtv_tabelle_fussball_02 set (anzahl='$anzahl', gegenstand='$gegenstand', zustaendiger='$zustaendiger', bemerkung='$bemerkung') where position like '$position'");

                  Guch doch mal, ob dir in eine der Variablen ein "Zeilenumbruch" reingerutscht ist. Ggf. Query-String mal vorher zusammenbauen, in Datei schreiben und dann nur:

                  $query=DAS_GANZE_GEWUSEL;
                  InTextdateiAusgeben($query);
                  mysql_query($query);

                  1. Guch doch mal, ob dir in eine der Variablen ein "Zeilenumbruch" reingerutscht ist.

                    Bringt auch nichts.

                    Ich hab nun auch mal die Variablen weg gesetzt und manuell wörter eingegeben - es ging auch nicht *wein*

                    Viele Grüße
                    Stefan

                    1. Hallo,

                      Ich hab nun auch mal die Variablen weg gesetzt und manuell wörter eingegeben - es ging auch nicht *wein*

                      ist das Dein lokaler Server? Dann solltest Du die DB mal im Logging-Modus starten: http://www.mysql.com/doc/Q/u/Query_log.html und Dir mal ansehen, was da so ankommt.

                      Alternativ kannst Du Dir ja mal den Query-String von PHP ausgeben lassen und diesen String dann mal am Mysql-Monitor direkt an die DB uebergeben, das sollte helfen.

                      Gruss
                      Thomas

                      1. Hallo,

                        Ich hab nun auch mal die Variablen weg gesetzt und manuell wörter eingegeben - es ging auch nicht *wein*

                        ist das Dein lokaler Server? Dann solltest Du die DB mal im Logging-Modus starten: http://www.mysql.com/doc/Q/u/Query_log.html und Dir mal ansehen, was da so ankommt.

                        Alternativ kannst Du Dir ja mal den Query-String von PHP ausgeben lassen und diesen String dann mal am Mysql-Monitor direkt an die DB uebergeben, das sollte helfen.

                        Gruss
                        Thomas

                        Du solltest einfach das "$" vor dem Spaltennamen Bemerkung weglassen.

                        1. Du solltest einfach das "$" vor dem Spaltennamen Bemerkung weglassen.

                          Das ist mir auch aufgefallen. Aber auch ohne dem ging's nicht...

                          Viele Grüße
                          Stefan R.

                          1. Hallo Stefan,

                            ich lese das hier gerade... Leider sitze ich am falschen Platz, meine ganzen schlauen Ordner sind alle im anderen Gebäude, da geht aber das Internet noch nicht wieder *wein*

                            Du solltest die Fehlermeldungen abfragen, die MySQL zur Verfügung stellt. Die sind in irgend einem schlauen String verpackt, den man mit PHP abfragen kann.

                            Selbstätig wird von PPHP/MySQL nur eine Fehlermeldung generiert, wenn bei der Connection was schief gegangen ist, oder der SQL-String syntaktisch falsch war. Je nach Einstellung wird die dann an den Browser gesandt oder nicht.

                            Hast Du denn auf die Tabelle überhaupt Update-Rechte? Vielleicht hast Du die ja weggenommen?

                            Außerdem solltest Du dir die "affected_rows" anzeigen lassen.

                            Liebe Grüße

                            Tom

      2. Hallo,

        ich hab das jetzt geändert wie du gemeint hast - es geht trotzdem nicht :(

        Nee, ich meinte die Sachen die Wirklich als Zahlen (int) in der DB definiert sind, sollen ohne Hochkommas geschrieben werden. Aber die Strings bzw. Chars müssen glaub ich in Hochkommas sein...

        Probier doch einfach mal mit so Programmen wie MySQL- Front die Query aus, vielleciht liegt der Fehler ja ganz wo anders...

        T!M