PDO update ändert keine Werte

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:
public function save_weeklyreport($array) {

        $pausen_id=1; ... !important

        try
        {
            for($i=0;$i<count($array['wr_id']);$i++) {

                if($array['wr_id'][$i]==0 && $array['wr_core'][$i]=='insert') {

                    $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']);
                    echo "insert";
                } elseif($array['wr_id'][$i]>=1 && $array['wr_core'][$i]=='update') {

                    $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']);
                    #echo "update";
                } else {
                    return false;
                }
                $pausen_id++;
            }

            return true;
        }
Hier wird abgefangen und weitergeleitet, ob INSERT oder UPDATE benutzt werden soll.

PHP:
private function update_weeklyreport($hash,$id,$core,$datum,$zeit_v,$zeit_b,$projekt,$ort,$mon,$pause,$korrektur,$bes,$u_token) {
        #$this->beginTransaction();

        try
        {
                if($pause==0) {$pausenwert=1;$pausenbezeichnung='Frühstück und Mittag';$wp_pause=0;}
                if($pause==1) {$pausenwert=0.5;$pausenbezeichnung='Frühstück';$wp_pause=1;}
                if($pause==2) {$pausenwert=0.5;$pausenbezeichnung='Mittag';$wp_pause=2;}
                if($pause==3) {$pausenwert=0;$pausenbezeichnung='keine';$wp_pause=3;}
                else{$wp_pause=3;$pausenbezeichnung='keine';}

                $query = "UPDATE `SE_weeklyreport` SET
                                                        `wr_date`= :date AND
                                                        `wr_von`= :von AND
                                                        `wr_bis`= :bis AND
                                                        `wr_projekt`= :projekt AND
                                                        `wr_ort`= :ort AND
                                                        `wr_montage`= :montage AND
                                                        `wr_pause`= :pause AND
                                                        `wr_pause_bez`= :pause_bez AND
                                                        `wr_korrektur`= :korrektur AND
                                                        `wr_bemerkung`= :bemerkung
                                                    WHERE `wr_id`=:id" ;

                $statement = $this->prepare($query);

                $statement->bindParam(':id', $id, PDO::PARAM_INT);
                $statement->bindParam(':date', $datum, PDO::PARAM_STR);
                $statement->bindParam(':von', $zeit_v, PDO::PARAM_STR);
                $statement->bindParam(':bis', $zeit_b, PDO::PARAM_STR);
                $statement->bindParam(':projekt', $projekt, PDO::PARAM_STR);
                $statement->bindParam(':ort', $ort, PDO::PARAM_STR);
                $statement->bindParam(':montage', $mon, PDO::PARAM_STR);
                $statement->bindParam(':pause', $wp_pause, PDO::PARAM_STR);
                $statement->bindParam(':pause_bez', $pausenbezeichnung, PDO::PARAM_STR);
                $statement->bindParam(':korrektur', $korrektur, PDO::PARAM_STR);
                $statement->bindParam(':bemerkung', $bes, PDO::PARAM_STR);

                $test = $statement->execute();

            #$this->commit();
            var_dump($test);
            return true;
        }
        catch (PDOException $e)
        {
            if(SHOW_EXCEPTIONERRORS) {
                echo 'Allgemeiner Fehler: '.$e->getMessage();
            }
            #$this->rollback ();
            $this->wirteLOG($e,'save_weeklyreport');
            return false;

        }
    }
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.
 
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?
SQL:
UPDATE tbl SET a = 1, b=2
 
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.
 

Neue Beiträge

Zurück