Datenbank Einträge mit PDO ändern


hiphap13

Grünschnabel
servus,
ich brauch bitte bisschen mal Hilfe. Ich sollte Einträge in einer Datenbank ändern aber irgendwie komme ich nicht weiter. Ich bin ein Neuling was programmieren angeht.

Also so sieht meine Code aus:


Code:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<title>PDO</title>
</head>
    
<?php

class artikel {

private $tabelle = "artikel";
    
public function lesenAlleDaten() {
    $sql = "SELECT anr, gnr, name, preis
                FROM " .$this-> tabelle ;
    $this->bearbeiten($sql);
}
    
    
public function bearbeiten($sql) {
     require("bdt.inc.php");
    $sql = "UPDATE" .$this-> tabelle . "SET gnr=? WHERE anr=?";
    if ($stmt = $pdo -> prepare($sql)) {
        $stmt->execute(array('gnr','anr'));
    
        echo "<table>\n\t";
        echo "<thead>
                <tr>
                    <th>Artikelnummer</th>
                    <th>Artikelgruppe</th>
                    <th>Artikelbezeichnung</th>
                    <th>Preis</th>
                    
                </tr>
            </thead>";
    
   while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
       if ($row ['gnr']=='2'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Werkzeug";}
       if ($row ['gnr']=='3'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Farben";}
       if ($row ['gnr']=='4'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Werkstoff";}
       if ($row ['gnr']=='5'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Holz";}
        echo "<tbody>
        <tr>
        <td> ".$row ['anr']." </td>
        <td>" .$row ['gnr']." </td>
        <td>" .$row ['name']." </td>
        <td>" .$row ['preis']." </td>
        </tr>
        </tbody>";
   }
       echo "</table>";
        
}
        
}
}


$ArtikelName = new artikel();
$ArtikelName->lesenAlleDaten();
?>
    <body>
</body>
</html>
 

Anhänge

Zuletzt bearbeitet:

Yaslaw

n/a
Moderator
Bitte Code als Code posten und nicht als Grafik. Dann kann man auch was kopieren. Jetzt musst du halt mit meiner schlechten Beschreibung zurecht kommen.

Ab Zeile 38. Was davor abgehen sollte ist nicht ersichtlich.
1) Vor und nach der Tabelle muss jeweils ein Leerzeichen sein.
2) Vergleichsstring gehört in ' gesetzt, oder ist Farben ein Tabellenfeld?
3) Irgendwo musst du dein SQL auch ausführen

Lass dir mal dein SQL ausgeben, dann sieht du den Fehler sofort.

Da du die Vorteile von PDO nicht nutzt, kannst du mal dein SQL analog zu mysqli debuggen
 

m.scatello

Mitglied
Da sind massenhaft Fehler drin!

bei allen .$this->tabelle. fehlen Leerzeichen im den Strings, da kommt dann sowas raus
"UpdateTabellennameSet ..."

$row['gnr']=2 ist kein Vergleich, sondern eine Zuweisung
 

hiphap13

Grünschnabel
ich hab versucht den Code auszugeben aber erfolglos...

Code:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<title>PDO</title>
</head>
    
<?php

class artikel {

private $tabelle = "artikel";
    
public function lesenAlleDaten() {
    $sql = "SELECT anr, gnr, name, preis
                FROM " .$this-> tabelle ;
    $this->bearbeiten($sql);
}
    
    
public function bearbeiten($sql) {
     require("bdt.inc.php");
    $sql = "UPDATE" .$this-> tabelle . "SET gnr=? WHERE anr=?";
    if ($stmt = $pdo -> prepare($sql)) {
        $stmt->execute(array('gnr','anr'));
    
        echo "<table>\n\t";
        echo "<thead>
                <tr>
                    <th>Artikelnummer</th>
                    <th>Artikelgruppe</th>
                    <th>Artikelbezeichnung</th>
                    <th>Preis</th>
                    
                </tr>
            </thead>";
    
   while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
       if ($row ['gnr']=='2'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Werkzeug";}
       if ($row ['gnr']=='3'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Farben";}
       if ($row ['gnr']=='4'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Werkstoff";}
       if ($row ['gnr']=='5'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Holz";}
        echo "<tbody>
        <tr>
        <td> ".$row ['anr']." </td>
        <td>" .$row ['gnr']." </td>
        <td>" .$row ['name']." </td>
        <td>" .$row ['preis']." </td>
        </tr>
        </tbody>";
   }
       echo "</table>";
        
}       
}
}
$ArtikelName = new artikel();
$ArtikelName->lesenAlleDaten();
?>
    <body>
</body>
</html>
 

Yaslaw

n/a
Moderator
Du hast 2 Antworten bekommen.
Beide beschreiben, dass folgende Zeilen falsch sind und Leerzeichen und anführungszeichen fehlen. Zudem habe ich eine Möglichkeit verlinkt, um solche Fehler zu analysieren.
if ($row ['gnr']=='2'){$sql= "UPDATE" .$this-> tabelle . "SET gnr = Werkzeug";}

In deinem Code ist der Fehler immer noch drin. Den Rest habe ich gar nicht angeschaut.
Eigentlich hast du keinen meiner Punkte umgesetzt.
Und eine erkläuterung, wo was für ein Fehler auftaucht wäre hilfreich.

Meine Empfehlungen und die von m.scatello stehen oben.