kein Input in Datenbank

Anacondi

Erfahrenes Mitglied
Hallo liebe PHP Gemeinde.
Habe ein Problem beim Input in Datenbank.
Die seite wird nach dem Submit mit einem Fehler angezeigt.
--->
kann diese Anfrage momentan nicht verarbeiten.
HTTP ERROR 500
----->
Hier mal ein Code:
PHP:
<?php
  $db = @new mysqli( "localhost", "Benutzername", "passwort", "Table" );
     if(!$db)
   {
    echo "<div class=\"meldung-fehler\">";
    echo "Verbindung zur Datenbank im Augenblick nicht möglich";
    echo "</div>";
    die();
   }
if($_POST["Eintragen"]==1)
   {  $titel = $_POST["Titel"];
      $beschreibung=$_POST["Beschreibung"];
      $kategorie=$_POST["Kateg"];
      $anzahl=$_POST["Anzahl"];
      $kosten=$_POST["Kosten"];
      $link=$_POST["Link"];
   
     $sql = "INSERT INTO images ('titel', 'beschreibung', 'kategorie', 'link', 'anzahl', 'kosten') VALUES (?,?,?,?,?,?)";

     $eintrag = $db->prepare( $sql );
     $eintrag->bind_param( 'ssssss', $titel, $beschreibung, $kategorie, $link, $anzahl, $kosten );
     $eintrag->execute();
     // Pruefen ob der Eintrag efolgreich war
        if ($eintrag->affected_rows == 1)
       {
       echo 'Der neue Eintrage wurde hinzugef&uuml;gt.';
       }
       else
      {
      echo 'Der Eintrag konnte nicht hinzugef&uuml;gt werden.';
      }
    }
?>
 
ohne weitere Hinweise musst du den Code Abschnitt für Abschnitt durchtesten. 500 bedeutet, dass etwas syntaktisch nicht korrekt ist. Spontan würde ich auf den Verbindungsaufbau tippen.
 
Kleiner Tipp:
PHP:
<?php
/* DEINE VARIABLE */
printf('<pre>%s</pre>', print_r('DEINEVARIABLE', true));

/* POST VARIABLE */
printf('<pre>%s</pre>', print_r($_POST, true));

/* $db VARIABLE */
printf('<pre>%s</pre>', print_r($db, true));
?>

Mit der Abfrage, debugge Ich sehr häufig und nimmt viel Arbeit bei der Suche nach Fehlern ab. :)
 
Ich habe jede einzelne Zeile ausgetestet.
der fehler scheint in diesem Abschnitt zu liegen. finde aber keinen...

PHP:
$sql = "INSERT INTO images ('titel', 'beschreibung', 'kategorie', 'link', 'anzahl', 'kosten') VALUES (?,?,?,?,?,?)";

     $eintrag = $db->prepare( $sql );
     $eintrag->bind_param( 'ssssss', $titel, $beschreibung, $kategorie, $link, $anzahl, $kosten );
     $eintrag->execute();
     // Pruefen ob der Eintrag efolgreich war
        if ($eintrag->affected_rows == 1)
       {
       echo 'Der neue Eintrage wurde hinzugef&uuml;gt.';
       }
       else
      {
      echo 'Der Eintrag konnte nicht hinzugef&uuml;gt werden.';
      }
ohne diesen Abschnitt gibt's keine Fehlermeldung. Zugriff auf Datenbank geht, hab mal ne testabfrage gemacht.
in der Datenbank gibt's in der Images Tabelle folgende untertabellen:
id (Autoincrement)
titel
bechreibung
kategorie
link
anzahl
kosten
Auch die Posts werden ornungsgemäß übertragen laut abfrage
 
Ich habe das ganze jetzt mal auf meinem alten Linux Server mit PHP5 getestet. da funktioniert es einwandfrei.
habe hier einen neuen Cloud Server mit php7 und da geht es nicht.
kann es sein, das man da bei php7 irgendwas umstellen muß, das man von aussen Daten eintragen kann?
Denn Datenbank Abfragen funktionieren, nur insert nicht.
Wenn ich aber direkt in der datenmank mit Benutzer root Daten eingebe geht es.
 
Kommen nur Strings oder auch anderen Werte wie Integer oder Double?

Du deklarierst mit bind_param immer nur Strings. :)
Wenn Du wirklich alles an Strings hast, dann sollte er es genau so umsetzen.

Ist es PDO oder mySQLi?
 
Ich habe nun alles versucht und finde keine Lösung um ein Insert in die Datenbank zu bekommen.
Damit ihr einen überblick habt, was genau ich mache stelle ich mal alles genau vor.
1. Die Datenbank:
db.jpg

die Index.php :
PHP:
<?php
session_start();
$pdo = new PDO('mysql:host=localhost;dbname=XXXXX', 'XXX Benutzer', 'XXX Passwort');

    $email = $_POST['email'];
    $passwort = $_POST['passwort'];
    $passwort2 = $_POST['passwort2'];

  $passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
  $statement = $pdo->prepare("INSERT INTO users (email, passwort) VALUES (:email, :passwort)");
  $result = $statement->execute(array('email' => $email, 'passwort' => $passwort_hash));

      
        if($result) {     
            echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
          
        } else {
            echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
        }
?>

     <form action="" method="post">
     E-Mail:<br>
     <input type="email" size="40" maxlength="250" name="email"><br><br>

     Dein Passwort:<br>
     <input type="password" size="40"  maxlength="250" name="passwort"><br>

     Passwort wiederholen:<br>
     <input type="password" size="40" maxlength="250" name="passwort2"><br><br>

     <input type="submit" value="Abschicken">
     </form>

eine abfrage der per Hand eingefügten Daten aus der Datenbank funktioniert mit :
PHP:
 $sql = "SELECT * FROM users WHERE id = 1";
    foreach ($pdo->query($sql) as $row) {
      echo $row["email"];
    }

Datebnbank zugriff geht also.
Könnt ihr erkennen, wo der Fehler liegt ?
es kommt immer nur die Meldung: 'Beim Abspeichern ist leider ein Fehler aufgetreten
 
Zurück