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

  • Screenshot 2020-02-26 12.32.17.png
    Screenshot 2020-02-26 12.32.17.png
    312,8 KB · Aufrufe: 7
  • Screenshot 2020-02-26 13.16.42.png
    Screenshot 2020-02-26 13.16.42.png
    255,7 KB · Aufrufe: 7
  • Album „Zuletzt“ anzeigen.png.jpeg
    Album „Zuletzt“ anzeigen.png.jpeg
    156,3 KB · Aufrufe: 6
Zuletzt bearbeitet:
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
https://wiki.yaslaw.info/doku.php/php/tutorials/debugmysqliqueries
 
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
 
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>
 
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.
 
Zurück