1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

PHP Insert into

    • PHP
  • Ole
  • 26. Januar 2024 um 22:04
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Ole
    Punkte
    370
    Beiträge
    59
    • 26. Januar 2024 um 22:04
    • #1

    Ich schreibe grade ein einfaches Tool für mein Restaurant wo ich die Temperaturen meiner Kühlungen speichern kann. Jetzt habe ich das Problem sobald ich die $comment mit einfüge in den Query das er das nicht mehr speichert. Die comment spalte in der Datenbank ist eine varchar(255) und sofern ich die abfrage so gestalte speichert er mir das auch:

    Code
    $query = "INSERT INTO `haccp_temperatur` (`kid`, `time`, `temperatur`, `cleaned`, `comment`) VALUES ($kid, $time, $temperatur, $cleaned, '')";
    PHP
    // Daten aus Formular auslesen
    $kid = $_POST['kid'];
    $time = $_POST['time'];
    $temperatur = $_POST['temperatur'];
    $cleaned = $_POST['cleaned'];
    $comment = $_POST['comment'];
    
    // Abfrage vorbereiten
    $query = "INSERT INTO `haccp_temperatur` (`kid`, `time`, `temperatur`, `cleaned`, `comment`) VALUES ($kid, $time, $temperatur, $cleaned, $comment)";
    
    // Abfrage ausführen
    $result = $db->query($query);
    
    // Erfolg ausgeben
    if ($result) {
      echo "Daten erfolgreich gespeichert!";
    } else {
      echo "Fehler beim Speichern der Daten!";
    }
    Alles anzeigen

    Einmal editiert, zuletzt von Ole (26. Januar 2024 um 22:16)

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 26. Januar 2024 um 22:50
    • #2

    Hast du denn auch eine Fehlermeldung?
    Und wie sieht $db aus? Denke mal es handelt sich da um PDO?

    PS: Niemals Formularwerte (egal ob GET/POST) unbehandelt übernehmen, man weiß nie was da alles kommt.

  • Ole
    Punkte
    370
    Beiträge
    59
    • 27. Januar 2024 um 09:40
    • #3
    Zitat von Syntafin

    Hast du denn auch eine Fehlermeldung?
    Und wie sieht $db aus? Denke mal es handelt sich da um PDO?

    PS: Niemals Formularwerte (egal ob GET/POST) unbehandelt übernehmen, man weiß nie was da alles kommt.

    PHP
    $db = @new mysqli('localhost', '***', '***', '***');
    if (mysqli_connect_errno()) {
        die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
    }

    Fehlermeldungen habe ich keine. Mehr sagt er mir nicht außer das es einen Fehler beim speichern gab.


    zum ps. mir schon klar daher das es aber eh nicht öffentlich zugänglich wird mache ich mir darum grade keine gedanken...

  • Cheety
    Punkte
    84
    Beiträge
    14
    • 27. Januar 2024 um 09:55
    • #4

    Versuch mal im Fehlerteil den Fehler mit ausgeben zu lassen.

    Code
    if ($result) {
      echo "Daten erfolgreich gespeichert!";
    } else {
      echo "Fehler beim Speichern der Daten! ".$db->error;
    }

    PHP: mysqli::$error - Manual

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 27. Januar 2024 um 10:27
    • #5
    Zitat von Ole

    Ich schreibe grade ein einfaches Tool für mein Restaurant wo ich die Temperaturen meiner Kühlungen speichern kann. Jetzt habe ich das Problem sobald ich die $comment mit einfüge in den Query das er das nicht mehr speichert. Die comment spalte in der Datenbank ist eine varchar(255) und sofern ich die abfrage so gestalte speichert er mir das auch:

    Code
    $query = "INSERT INTO `haccp_temperatur` (`kid`, `time`, `temperatur`, `cleaned`, `comment`) VALUES ($kid, $time, $temperatur, $cleaned, '')";
    PHP
    // Daten aus Formular auslesen
    $kid = $_POST['kid'];
    $time = $_POST['time'];
    $temperatur = $_POST['temperatur'];
    $cleaned = $_POST['cleaned'];
    $comment = $_POST['comment'];
    
    // Abfrage vorbereiten
    $query = "INSERT INTO `haccp_temperatur` (`kid`, `time`, `temperatur`, `cleaned`, `comment`) VALUES ($kid, $time, $temperatur, $cleaned, $comment)";
    
    // Abfrage ausführen
    $result = $db->query($query);
    
    // Erfolg ausgeben
    if ($result) {
      echo "Daten erfolgreich gespeichert!";
    } else {
      echo "Fehler beim Speichern der Daten!";
    }
    Alles anzeigen
    Code
    Du musst die Übergebenen Parameter in ein Array Packen und dieses seperat übergeben. Ansonsten versucht MYSQL deine PHP Variablen einzufügen.
    Also so:
    
    $query = "INSERT INTO `haccp_temperatur` (`kid`, `time`, `temperatur`, `cleaned`, `comment`) VALUES (?, ?, ?, ?, ?)";
    $result = $db->query($query, [$kid, $time, $temperatur, $cleaned, $comment]);
    
    Jetzt werden in der Query die Platzhalter gesetzt und anschließend übermitteslt du die Parameter beim ausführen.
  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 27. Januar 2024 um 12:09
    • #6

    mysqli.... urgs. Ich war mal so frei und hab es dir hier mal als PDO umgeschrieben mit Error-Handling:

    PHP
    <?php
    try {
        // Verbindung zur Datenbank herstellen
        $db = new PDO('mysql:host=localhost;dbname=***', '***', '***');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        // Daten aus Formular sichern
        $kid = $_POST['kid'];
        $time = $_POST['time'];
        $temperatur = $_POST['temperatur'];
        $cleaned = $_POST['cleaned'];
        $comment = $_POST['comment'];
    
        // Prepared Statement vorbereiten
        $query = $db->prepare("INSERT INTO `haccp_temperatur` (`kid`, `time`, `temperatur`, `cleaned`, `comment`) VALUES (:kid, :time, :temperatur, :cleaned, :comment)");
    
        // Parameter binden
        $query->bindParam(':kid', $kid, PDO::PARAM_INT);
        $query->bindParam(':time', $time, PDO::PARAM_STR);
        $query->bindParam(':temperatur', $temperatur, PDO::PARAM_INT);
        $query->bindParam(':cleaned', $cleaned, PDO::PARAM_INT);
        $query->bindParam(':comment', $comment, PDO::PARAM_STR);
    
        // Prepared Statement ausführen
        $query->execute();
    
        // Erfolg ausgeben
        echo "Daten erfolgreich gespeichert!";
    } catch (PDOException $e) {
        // Fehler behandeln
        echo "Fehler beim Speichern der Daten: " . $e->getMessage();
    }
    ?>
    Alles anzeigen
  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 28. Januar 2024 um 20:33
    • #7
    Zitat von Syntafin

    mysqli.... urgs. Ich war mal so frei und hab es dir hier mal als PDO umgeschrieben mit Error-Handling:

    Was genau ist denn jetzt der Vorteil an PDO? Für kurze Querys ist es doch viel praktischer, wenn man alles in einer Zeile machen kann und nicht Prepare, Bind param und Execute nach einader ausführen muss.

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 28. Januar 2024 um 20:40
    • #8
    Zitat von flyingtable07

    Was genau ist denn jetzt der Vorteil an PDO?

    Das was du nicht so magst offensichtlich, die Sicherheit.

    Zitat von flyingtable07

    Für kurze Querys ist es doch viel praktischer, wenn man alles in einer Zeile machen kann und nicht Prepare, Bind param und Execute nach einader ausführen muss.

    Ach Einzeiler? Bitte sehr:

    PHP
    (new PDO('mysql:host=localhost;dbname=***', '***', '***'))->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)->prepare("INSERT INTO `haccp_temperatur` (`kid`, `time`, `temperatur`, `cleaned`, `comment`) VALUES (:kid, :time, :temperatur, :cleaned, :comment)")->execute([':kid'=>$_POST['kid'], ':time'=>$_POST['time'], ':temperatur'=>$_POST['temperatur'], ':cleaned'=>$_POST['cleaned'], ':comment'=>$_POST['comment']]);
  • Ole
    Punkte
    370
    Beiträge
    59
    • 29. Januar 2024 um 16:33
    • #9
    Zitat von Syntafin

    mysqli.... urgs. Ich war mal so frei und hab es dir hier mal als PDO umgeschrieben mit Error-Handling:

    PHP
    <?php
    try {
        // Verbindung zur Datenbank herstellen
        $db = new PDO('mysql:host=localhost;dbname=***', '***', '***');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        // Daten aus Formular sichern
        $kid = $_POST['kid'];
        $time = $_POST['time'];
        $temperatur = $_POST['temperatur'];
        $cleaned = $_POST['cleaned'];
        $comment = $_POST['comment'];
    
        // Prepared Statement vorbereiten
        $query = $db->prepare("INSERT INTO `haccp_temperatur` (`kid`, `time`, `temperatur`, `cleaned`, `comment`) VALUES (:kid, :time, :temperatur, :cleaned, :comment)");
    
        // Parameter binden
        $query->bindParam(':kid', $kid, PDO::PARAM_INT);
        $query->bindParam(':time', $time, PDO::PARAM_STR);
        $query->bindParam(':temperatur', $temperatur, PDO::PARAM_INT);
        $query->bindParam(':cleaned', $cleaned, PDO::PARAM_INT);
        $query->bindParam(':comment', $comment, PDO::PARAM_STR);
    
        // Prepared Statement ausführen
        $query->execute();
    
        // Erfolg ausgeben
        echo "Daten erfolgreich gespeichert!";
    } catch (PDOException $e) {
        // Fehler behandeln
        echo "Fehler beim Speichern der Daten: " . $e->getMessage();
    }
    ?>
    Alles anzeigen

    Dank dir jetzt speichert er es ab aber nur 5x

  • Syntafin
    Punkte
    7.925
    Beiträge
    1.439
    • 29. Januar 2024 um 17:01
    • #10

    Was meinst du mit "aber nur 5x"?

  • flyingtable07
    Punkte
    3.580
    Beiträge
    681
    • 29. Januar 2024 um 18:28
    • #11
    Zitat von Ole

    Dank dir jetzt speichert er es ab aber nur 5x

    Wie sieht den deine Tabelle aus? Hast du vielleicht irgendwelche Unique Indexes gesetzt, sodass nur eine bestimmte Menge an Datensätzen eingefügt werden kann?

Ähnliche Themen

  • PHP webproxy

    • flyingtable07
    • 28. August 2023 um 11:38
    • Entwicklung
  1. Datenschutzerklärung
  2. Impressum