1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

PDO update ändert keine Werte

Dieses Thema im Forum "PHP" wurde erstellt von Basti_2015, 18. Oktober 2016.

  1. Basti_2015

    Basti_2015 Mitglied

    Hi, ich habe schon über die Suchfunktion geschaut und deren Lösungsansätze probiert, kein Erfolg. Ich muss auf dem Schlauch sitzen, da es sich um eine profane Funktion handelt.

    Ich sende ein Formular ab, dieses wird verarbeitet und über einer dbKlasse in eine Datenbank gespeichert.

    PHP:
    1. public function save_weeklyreport($array) {
    2.  
    3.         $pausen_id=1; ... !important
    4.  
    5.         try
    6.         {
    7.             for($i=0;$i<count($array['wr_id']);$i++) {
    8.  
    9.                 if($array['wr_id'][$i]==0 && $array['wr_core'][$i]=='insert') {
    10.  
    11.                     $this->insert_weeklyreport($array['hash'],$array['wr_id'][$i],$array['wr_core'][$i],$array['wp_datum'][$i],$array['zeitraum_von'][$i],$array['zeitraum_bis'][$i],$array['wp_projekt'][$i],$array['wp_ort'][$i],$array['wp_mon'][$i],$array['wp_pause'.$pausen_id],$array['wp_korrektur'][$i],$array['wp_bes'][$i],$array['u_token']);
    12.                     echo "insert";
    13.                 } elseif($array['wr_id'][$i]>=1 && $array['wr_core'][$i]=='update') {
    14.  
    15.                     $this->update_weeklyreport($array['hash'],$array['wr_id'][$i],$array['wr_core'][$i],$array['wp_datum'][$i],$array['zeitraum_von'][$i],$array['zeitraum_bis'][$i],$array['wp_projekt'][$i],$array['wp_ort'][$i],$array['wp_mon'][$i],$array['wp_pause'.$pausen_id],$array['wp_korrektur'][$i],$array['wp_bes'][$i],$array['u_token']);
    16.                     #echo "update";
    17.                } else {
    18.                     return false;
    19.                 }
    20.                 $pausen_id++;
    21.             }
    22.  
    23.             return true;
    24.         }
    Hier wird abgefangen und weitergeleitet, ob INSERT oder UPDATE benutzt werden soll.

    PHP:
    1. private function update_weeklyreport($hash,$id,$core,$datum,$zeit_v,$zeit_b,$projekt,$ort,$mon,$pause,$korrektur,$bes,$u_token) {
    2.         #$this->beginTransaction();
    3.  
    4.         try
    5.         {
    6.                 if($pause==0) {$pausenwert=1;$pausenbezeichnung='Frühstück und Mittag';$wp_pause=0;}
    7.                 if($pause==1) {$pausenwert=0.5;$pausenbezeichnung='Frühstück';$wp_pause=1;}
    8.                 if($pause==2) {$pausenwert=0.5;$pausenbezeichnung='Mittag';$wp_pause=2;}
    9.                 if($pause==3) {$pausenwert=0;$pausenbezeichnung='keine';$wp_pause=3;}
    10.                 else{$wp_pause=3;$pausenbezeichnung='keine';}
    11.  
    12.                 $query = "UPDATE `SE_weeklyreport` SET
    13.                                                        `wr_date`= :date AND
    14.                                                        `wr_von`= :von AND
    15.                                                        `wr_bis`= :bis AND
    16.                                                        `wr_projekt`= :projekt AND
    17.                                                        `wr_ort`= :ort AND
    18.                                                        `wr_montage`= :montage AND
    19.                                                        `wr_pause`= :pause AND
    20.                                                        `wr_pause_bez`= :pause_bez AND
    21.                                                        `wr_korrektur`= :korrektur AND
    22.                                                        `wr_bemerkung`= :bemerkung
    23.                                                    WHERE `wr_id`=:id" ;
    24.  
    25.                 $statement = $this->prepare($query);
    26.  
    27.                 $statement->bindParam(':id', $id, PDO::PARAM_INT);
    28.                 $statement->bindParam(':date', $datum, PDO::PARAM_STR);
    29.                 $statement->bindParam(':von', $zeit_v, PDO::PARAM_STR);
    30.                 $statement->bindParam(':bis', $zeit_b, PDO::PARAM_STR);
    31.                 $statement->bindParam(':projekt', $projekt, PDO::PARAM_STR);
    32.                 $statement->bindParam(':ort', $ort, PDO::PARAM_STR);
    33.                 $statement->bindParam(':montage', $mon, PDO::PARAM_STR);
    34.                 $statement->bindParam(':pause', $wp_pause, PDO::PARAM_STR);
    35.                 $statement->bindParam(':pause_bez', $pausenbezeichnung, PDO::PARAM_STR);
    36.                 $statement->bindParam(':korrektur', $korrektur, PDO::PARAM_STR);
    37.                 $statement->bindParam(':bemerkung', $bes, PDO::PARAM_STR);
    38.  
    39.                 $test = $statement->execute();
    40.  
    41.             #$this->commit();
    42.            var_dump($test);
    43.             return true;
    44.         }
    45.         catch (PDOException $e)
    46.         {
    47.             if(SHOW_EXCEPTIONERRORS) {
    48.                 echo 'Allgemeiner Fehler: '.$e->getMessage();
    49.             }
    50.             #$this->rollback ();
    51.            $this->wirteLOG($e,'save_weeklyreport');
    52.             return false;
    53.  
    54.         }
    55.     }
    Hier seht ihr die UPDATE-Funktion. Meines erachtens normal und schon 100x geschrieben. Ich prüfe auch was mir der prepare() zurücksendet-> alles TRUE .

    Auch sonst kommt beim Ausschlussverfahren, wo er hängen könnte, nicht bei raus. Das Script läuft den richtigen Weg und meldet überall ein TRUE. Es kommt keinerlei Fehlermeldung. Jedoch wird nichts mehr Erstellt bzw. upgedatet.

    Hat wer zufällig eine Idee? Benötige mal ein schubs.
     
  2. Yaslaw

    Yaslaw n/a Moderator

    Kannst du mal ein var_dump von $array zur Verfügung stellen?
    Ist es richtig, dass $array['hash'] kein [$id] hinten dran braucht?

    Zudem kenne ich beim UPDATE das AND nicht. Sollte dort nicht Kommas sein?
    Code (SQL):
    1. UPDATE tbl SET a = 1, b=2
     
  3. Basti_2015

    Basti_2015 Mitglied

    Danke, frag mich nicht, wieso ich diese ANDs nicht realisiert habe. Es kam keine Fehlermeldung seitesn MYSQL, daher habe ich da einfach blind vertraut. Jetzt läuft es, wie es soll.
     
  4. Basti_2015

    Basti_2015 Mitglied

    Zum Hash, ja er hat keine angehängte ID. Da dieser Hash für alle Einträge gilt.
     
Die Seite wird geladen...
Ähnliche Themen - update ändert keine
  1. CreativPur
    Antworten:
    3
    Aufrufe:
    298
  2. CreativPur
    Antworten:
    3
    Aufrufe:
    992
  3. CreativPur
    Antworten:
    3
    Aufrufe:
    328
  4. CreativPur
    Antworten:
    26
    Aufrufe:
    666
  5. nikon2k
    Antworten:
    9
    Aufrufe:
    755