Seltsames Verhalten von execute() oder Fehler meinerseits

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Seltsames Verhalten von execute() oder Fehler meinerseits

    Hallo liebe Community,

    ich habe ein kleines Problem und vielleicht kann mir ja jemand helfen, würde ich mich sehr drüber freuen.

    Unten steht ein Stück Code was folgendes macht oder machen soll:

    Zeile 1 füllt ein Array, was in Zeile 2 auch korrekt angezeigt wird.
    Datenbankverbindung ist übrigens schon geöffnet. Soweit so gut. Zeile 3 bereitet die Abfrage für die Datenbank vor.
    Zeile 4 und Zeile 5 sollen das Befüllen der Datenbanktabelle darstellen, was aber in beiden Fällen nicht funktioniert.
    Einzig Zeile 6 ist in der Lage eine Zeile in der Tabelle 'tabelle' der Datenbank zu schreiben, das habe ich mehrfach überprüft.


    1. $daten = array('projektnummer' => '2222', 'projektname' => 'Neues Projekt');
    2. echo "Daten aus Array: ";print_r ($daten);
    3. $stmt = $db->prepare("INSERT INTO tabelle (projektnummer, projektname) VALUES (?, ?)");
    4. //$stmt->execute(array('projektnummer' => '2222', 'projektname' => 'Neues Projekt'));
    5. ​//$stmt->execute($daten);
    6. $stmt->execute(array('2222', 'Neues Projekt'));

    Vielleicht kann mir ja jemand von Euch die Augen öffnen und mir sagen, was ich verkehrt mache.

    Vielen lieben Dank und herzliche Grüße
    H.
    Zuletzt geändert von garibaldiwz; 23.03.2024, 20:40.

  • #2
    Verwende in deiner prepare Anweisung nicht einfach nur ? sondern benenne die platzhalter mit einem vorangestellten doppelpunkt.

    PHP-Code:
    $stmt $db->prepare("INSERT INTO tabelle (projektnummer, projektname) VALUES (:projektnummer, :projektname)"); 
    Die müssen dann den jeweiligen Schlüsseln in deinem array entsprechen, wobei die Reihenfolge jetzt egal wird.
    Sie Schlüsse im array dürfen mit oder ohne vorangestellen doppelpunkt übergeben werden. du brauchst daran also nichts zu ändern.
    Zuletzt geändert von reddighamburg; 05.04.2024, 15:14.

    Kommentar


    • #3
      I fixed your code like that.
      HTML-Code:
      $data = array('project number' => '2222', 'project name' => 'New Project');
      echo "Data from array: "; print_r($data);
      
      $stmt = $db->prepare("INSERT INTO table (project number, project name) VALUES (?, ?)");
      
      // Extract values from the array for binding
      $projectNumber = $data['project number'];
      $projectName = $data['project name'];
      
      $stmt->execute(array($projectNumber, $projectName));
      ​
      Zuletzt geändert von admin; 08.04.2024, 12:31.

      Kommentar


      • #4
        Vielen lieben Dank für Eure Antworten, es hat geklappt, so, wie beschrieben...
        Thnxs for your answers, all problems are fixed, cause your solutions and sorry for my bad english...

        H.

        Kommentar


        • #5
          Hello

          You can check below steps -
          1. Check for errors after executing the statement.
          2. Bind parameters to placeholders in the SQL query.
          3. Confirm that the data being inserted matches the format expected by the database table.

          $data = array('project_number' => '2222', 'project_name' => 'New Project');
          $stmt = $db->prepare("INSERT INTO table_name (project_number, project_name) VALUES (?, ?)");

          if ($stmt && $stmt->bind_param('ss', $data['project_number'], $data['project_name']) && $stmt->execute()) {
          echo "Data inserted successfully!";
          } else {
          echo "Error executing the statement: " . $db->error;
          }

          Replace 'table_name' with your actual table name, and adjust the data array keys to match your table's column names.

          Hope it helps !

          Thank you
          nolanmaris
          msbi course

          Kommentar

          Lädt...
          X