Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] MySQL-Update in PHP zu lang?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] MySQL-Update in PHP zu lang?

    Hey Leute

    Ich habe mal wieder ein Problem.
    Mein Update-Befehl ist SEHR lang.
    Stellt MySQL sich da quer?
    Es müssen nämlich 90 Spalten geupdatet werden, allerdings nur eine Zeile.
    Probiere ich das mit nur 2, 3 Spalten, klappt alles ganz normal, nehme ich dann alle, funktioniert es nicht mehr.
    Gibt es da eine Erklärung für?

  • #2
    Verwendest Du mysql_query() und hängt da ein or die(mysql_error() oder etwas vergleichbares dran?
    Dann: Welche Fehlermeldung erhälst Du?

    Kommentar


    • #3
      Ja, das tue ich, aber ich bekomme keine Fehlermeldung

      (edit)
      Das hier (also bei 2 Spalten) funktioniert:
      PHP-Code:
      $update "UPDATE $table SET Veranstalter1='".$_POST['Veranstalter1']."', 
              Veranstalter2='"
      .$_POST['Veranstalter2']."' 
              WHERE V_Nr = '"
      .$V_Nr."'"
      wohingegen das hier nicht klappt:
      PHP-Code:
      $update "UPDATE $table SET veranst_kurz='".$_POST['veranst_kurz']."', Veranstalter0='".$_POST['Veranstalter0']."', 
               Veranstalter1='"
      .$_POST['Veranstalter1']."', Veranstalter2='".$_POST['Veranstalter2']."', 
               supplier_qcat1='"
      .$_POST['supplier_qcat1']."', supplier_qcat2='".$_POST['supplier_qcat2']."', 
               supplier_qcat3='"
      .$_POST['supplier_qcat3']."', supplier_qcat_org_form='".$_POST['supplier_qcat_org_form']."', 
               
      $supplier_qcat_type='".$_POST['supplier_qcat_type']."', Veranst_oben='".$_POST['Veranst_oben']."', 
               Veranst_mitte='"
      .$_POST['Veranst_mitte']."', Veranst_unten='".$_POST['Veranst_unten']."',
               Ansprechpartner='"
      .$_POST['Ansprechpartner']."', 
          /*geht noch endlos so weiter*/
               WHERE V_Nr = '"
      .$V_Nr."'" 

      Kommentar


      • #4
        Wie sieht die entsprechende (relevante) Codestelle aus?

        Kommentar


        • #5
          Habe ich oben grade in meinen anderen Post mit reinkopiert

          Kommentar


          • #6
            Und wie sieht das eigentliche Senden der Abfrage und die Auswertung des Rückgabewertes aus?

            Du sicherst die Parameter nicht für die Verwendung in einem SQL-Statement ab, siehe [man]mysql_real_escape_string[/man].

            Kommentar


            • #7
              Das poste ich morgen, ich bin nämlich mittlerweile zu Hause, den ganzen Kram hab ich aber auf der Arbeit.
              Nur dass ihr bescheid wisst.
              Ich wundere mich halt nur, dass die Abfrage klappt, wenn man wenige Spalten hat, aber eben nicht, wenn man viele hat

              Kommentar


              • #8
                Funktioniert nicht mehr ist nicht gerade ein sehr aussagekräftige Fehlerbeschreibung. Was funtioniert denn nicht, und ab wieviel Attributen? MySQL sollte eigentlich damit keine Probleme haben. Lass dir halt das Statement ausgeben und versuche es damit mal im PMA.
                Zitat von Sniper_Kotaro Beitrag anzeigen
                Es müssen nämlich 90 Spalten geupdatet werden
                Wenn ich das lese und dann noch deine Abfrage ansehe, so frage ich mich dann doch, was das für ein DB-Design ist. Ich habe in einer halbwegs normalisierten DB noch nie Tabellen mit mehr als höchstens 20 Attributen gesehen.

                Kommentar


                • #9
                  Zitat von lazydog Beitrag anzeigen
                  Funktioniert nicht mehr ist nicht gerade ein sehr aussagekräftige Fehlerbeschreibung.
                  Was soll ich noch sagen?
                  Der Update-Befehl funktioniert dann nicht, er updatet die Spalten einfach nicht

                  Und das Design ist nicht mein "Verdienst", ich erledige lediglich den Job den mein Partner und ich als Projekt im Rahmen unseres Studiums bekommen haben.
                  Ich halte das auch für VIEL zu viele Spalten, aber wie wir ja wissen: Der Kunde ist König

                  Kommentar


                  • #10
                    Zitat von Sniper_Kotaro Beitrag anzeigen
                    Was soll ich noch sagen?
                    z.B. ab wievielen Attributen das nicht mehr funktioniert.
                    Hast du das Ganze mal auf dem PMA probiert, reagiert es dort gleich?

                    Kommentar


                    • #11
                      Ich würde immer noch gerne den gesamten relevanten Codeausschnitt sehen.

                      Kommentar


                      • #12
                        Uff, das teste ich erstmal, wird aber ne Zeit dauern...

                        Das bei PMA zu probieren ist wirklich ne gute Idee.

                        (edit)

                        Ah jau, sorry David!
                        Hier:
                        PHP-Code:
                        if(isset($_POST['aendern'])) 
                            {         
                                
                        $update "UPDATE $table SET veranst_kurz='".$_POST['veranst_kurz']."', Veranstalter0='".$_POST['Veranstalter0']."', 
                                 Veranstalter1='"
                        .$_POST['Veranstalter1']."', Veranstalter2='".$_POST['Veranstalter2']."', 
                                 supplier_qcat1='"
                        .$_POST['supplier_qcat1']."'
                        //NOCH SEHR VIEL MEHR
                                 WHERE V_Nr = '"
                        .$V_Nr."'";

                                
                        $db mysql_select_db('s0.alpha'$dbconnect);
                                
                        $queryupdate mysql_query($update$dbconnect);
                                echo 
                        'Daten wurden geändert'
                            } 
                        Im Übrigen, bin mittlerweile bei 50 angekommen, da macht er es noch immer..

                        Kommentar


                        • #13
                          Also ich habe auch so ne verdammt lange update abfrage und ich habe herausgefunden, dass er nach der 52 Spaltet nicht mehr updatet.
                          Hab es also auf 2 updates gesplittet. Und siehe da, es funktioniert. Aber wieso weiß ich nciht, na ja. normalerweise macht auch kein mensch der etwas Ahnung von DB's hat so große Tabellen

                          PHP-Code:
                          $update1 "Update $table SET
                                      Semtitel1 = '"
                          .$_POST['semt1']."',
                                      Semtitel2 = '"
                          .$_POST['Semtitel2']."',
                                      Semtitel3 = '"
                          .$_POST['Semtitel3']."',
                                      Titelgesamt = '"
                          .$_POST['Titelgesamt']."',
                                      ...
                                      WHERE Kenn_Nr = '"
                          .$Kenn_Nr."'";
                                      
                          $db mysql_select_db('s0.alpha'$dbconnect);
                                      
                          $queryupdate mysql_query($update1$dbconnect);
                                      
                                      
                                      
                          $update2 "Update $table SET
                                      BE_KZ = '"
                          .$_POST['BE_KZ']."',
                                      ...
                                      WHERE Kenn_Nr = '"
                          .$Kenn_Nr."'";
                                      
                          $db mysql_select_db('s0.alpha'$dbconnect);
                                      
                          $queryupdate mysql_query($update2$dbconnect);
                                      
                                      echo 
                          "Daten wurden geändert"

                          Kommentar


                          • #14
                            Zitat von David
                            Verwendest Du mysql_query() und hängt da ein or die(mysql_error() oder etwas vergleichbares dran?
                            Zitat von Sniper_Kotaro
                            Ja, das tue ich, aber ich bekomme keine Fehlermeldung
                            Dem Codeausschnitt nach tust Du das nicht.

                            Kommentar


                            • #15
                              Ja stimmt, in der Update-Sache habe ich das tatsächlich noch nicht, wie mir grade auffällt!
                              Ich habe das lediglich in meiner Delete-Sache.
                              Du hast vollkommen Recht, bei Update habe ich dsa vergessen!

                              Kommentar

                              Lädt...
                              X