mysql_query("update ...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql_query("update ...

    Hallo NG,
    ich habe folgendes Problem:
    $link = mysql_connect("$host", "$benutzer", "$passwort") or die("Keine Verbindung möglich!");
    mysql_select_db("$datenbank1") or die ("Anfrage fehlgeschlagen");
    // jetzt updaten wir alle Preise
    mysql_query("update products SET products_price = '$ashop['Ek']' WHERE products_model = '$ashop['Artikel_nr']'");

    sprich ich möchte mit einem UPDATE-Befehl alle Preise aus der Tabelle products mit den aktuellen Preisen aus der Tabelle ashop updaten für (WHERE) alle Artikelnummern, die übereinstimmen.

    Leider klappt das mit obiger Abfrage (letzte Zeile) nicht.

    Wer kann mir helfen? DANKE

    Danke! Steve

  • #2
    poste die fehlermeldung
    bau die im forum immer wieder besprochene fehleranalyse ein
    gib dein query als echo aus
    teste deine ausgabe in phpmyadmin

    Kommentar


    • #3
      Code aktuell:
      // jetzt updaten wir alle Preise
      $updaten = "update products SET products_price = '$ashop[Ek]' WHERE products_model = '$ashop[Artikel_nr]'";
      echo $updaten;
      mysql_query($updaten) or die(mysql_error());

      Ausgabe aktuell im Browser-Fenster:
      ---> Verbindung wurde hergestellt
      ---> Daten werden nun abgeglichen
      update products SET products_price = '' WHERE products_model = ''
      ---> Verbindung wird geschlossen
      ---> Daten wurden abgeglichen

      Fazit: Die Werte in den ' ' gibt er nicht aus, kann er also auch nicht anwenden. Info: Die Tabelle ashop ist aber in der gleichen Datenbank!

      Kommentar


      • #4
        vriablen in strings einzubetten kann in die hose gehen, vor allem wenn es array-vars sind ...
        PHP-Code:
        $bla "das ist eine $var['blubb'] im string";
        // vs.
        $bla "das ist KEINE ".$var['blubb']." im string"
        *verschieb zu php*
        Kissolino.com

        Kommentar


        • #5
          Danke, aber
          a) verstehe ich jetzt nichts was es mit PHP zu tun hat.
          b) sind es keine Arrays, sondern
          c) die Werte aus der anderen Tabelle, die übernommen werden sollen

          ... nochmal im Zusammenhang wie in meiner ersten Frage:

          sprich ich möchte mit einem UPDATE-Befehl alle Preise aus der Tabelle products mit den aktuellen Preisen aus der Tabelle ashop updaten für (WHERE) alle Artikelnummern, die übereinstimmen.

          Danke für konstruktive Tipps.

          Kommentar


          • #6
            Original geschrieben von logisch
            b) sind es keine Arrays, sondern
            ach, und was ist das:
            Code aktuell:
            // jetzt updaten wir alle Preise
            $updaten = "update products SET products_price = '$ashop[Ek]' WHERE products_model = '$ashop[Artikel_nr]'";
            ....
            update products SET products_price = '' WHERE products_model = ''
            ... wenn das keine werte aus einem array sind ... bin ich gespannt was $ashop[Ek] & co darstellen soll ... vielleicht prüfst du zusätzlich mal, ob die dinger überhaupt einen inhalt haben.

            btw: für mich ist es nach wie vor ein php-problem ... irgendwie logisch, oder
            Kissolino.com

            Kommentar


            • #7
              ok - i try it again ...

              Arrays sind für mich "Container" für Ketten gleichartiger Variablen. In der Programmierersprache spricht man auch von einem "Vektor". In einem Array name[50] kann ich also 50 mal einen Namen speichern.

              Bei meinem Problem - was aus meiner "falschen" Zeile eventuell so für Euch entstehen kann - ist der Wert zum Beispiel bei $ashop[Artikel_nr]' die Artikelnummer zB 463746, die in der Tabelle ashop steht. Und $ashop[Ek] ist der neue Preis zb 17.40 aus der Tabelle ashop, der in meine andere Tabelle übertragen werden soll.

              Aber vielleicht habe ich schon einen grundlegenden Fehler in meiner Absicht. Vielleicht geht das gar nicht, was ich will.

              Ich versuchs einfach nochmal:
              sprich ich möchte mit einem UPDATE-Befehl alle Preise aus der Tabelle products mit den aktuellen Preisen aus der Tabelle ashop updaten für (WHERE) alle Artikelnummern, die übereinstimmen.

              Kommentar


              • #8
                Original geschrieben von logisch
                Array name[50] kann ich also 50 mal einen Namen speichern.
                das mag in deiner welt so sein, in php steht im array "name" auf dem index "50" ein wert, der auch ein array sein ... anyway
                Bei meinem Problem - was aus meiner "falschen" Zeile eventuell so für Euch entstehen kann - ist der Wert zum Beispiel bei $ashop[Artikel_nr]' die Artikelnummer zB 463746, die in der Tabelle ashop steht. Und $ashop[Ek] ist der neue Preis zb 17.40 aus der Tabelle ashop, der in meine andere Tabelle übertragen werden soll.
                ist in der tat missverständlich
                Aber vielleicht habe ich schon einen grundlegenden Fehler in meiner Absicht. Vielleicht geht das gar nicht, was ich will.
                ja ... aber ...
                sprich ich möchte mit einem UPDATE-Befehl alle Preise aus der Tabelle products mit den aktuellen Preisen aus der Tabelle ashop updaten für (WHERE) alle Artikelnummern, die übereinstimmen.
                sag das doch gleich

                probier mal folgendes (pseudocode)
                PHP-Code:
                update products pashop s SET p.products_price s.Ek WHERE p.products_model s.Artikel_nr 
                ... mal im phpMyAdmin absetzen (vielleicht die tabellen vorher sichern?!)

                dafür schieb ich dich auch wieder zurück zu sql.
                Kissolino.com

                Kommentar


                • #9
                  Multitable Updates setzten allerdings mindestens 'ne MySQL 4.0.4 voraus ... !
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    Hallo "Wurzel",
                    schön, dass mich nun einer verstanden hat, obwohl ich es in jedem Posting ja schon richtig angegeben habe

                    Leider erhalte ich als Fehglermeldung nun:
                    You have an error in your SQL syntax near 'p, ashop s SET p.products_price = s.Ek WHERE p.products_model = s.Artikel' at line 1

                    Der Grund wird wohl sein, dass ich mySQL 3.23 nutze, wie "goth" wohl schon vermutet hat.

                    Gibt es eine andere Möglichkeit?

                    Kommentar


                    • #11
                      a) select der datensätze ("join"en) ... update in einer schleife
                      b) db updaten
                      c) darauf vertrauen, dass sql-goth etwas besseres einfällt
                      Kissolino.com

                      Kommentar


                      • #12
                        Eventuell könnte Dir auch 'ne Temporäre Tabelle und ein REPLACE helfen ... vom Prinzip her einfach eine temporäre Tabelle erstellen

                        CREATE TEMPORARY TABLE temp
                        SELECT p.field1, p.field2, [color=red]pr.preis[/color], p.field3, ....
                        FROM products p
                        INNER JOIN tabellemitneuempreis pr
                        ON p.id = pr.id
                        WHERE ???

                        und dann den ganzen Kram wieder mit einem REPLACE zurück ...

                        REPLACE INTO products
                        SELECT * FROM temp;

                        DROP TABLE temp;

                        Wenn ein entsprechender PRIMARY KEY vorhanden ist funzt es ...

                        Nicht schön ... aber selten ... und ich bin sehr müde ...
                        carpe noctem

                        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                        Kommentar


                        • #13
                          Hallo Ihr beiden,

                          danke für die Mühe.
                          Ja, ich werde es wohl so wie "goth" vorschlägt machen,
                          jedoch nicht wie "goth" sagt -carpe noctem- sondern gemäß -carpe diem- ..., ein langer Sams-Tag wartet, da werde ich es dann testen.

                          Gute Nacht und DANKE

                          Kommentar

                          Lädt...
                          X