URL: https://www.overclockers.at/coding-stuff/mysql-insert_242128/page_2 - zur Vollversion wechseln!
Es ist noch mehr falsch. Die bind-Parameter werden nicht gesetzt und wenn dann in der falschen Reihenfolge. Schau dir mal den Beispielcode auf php.net an, dann siehst du das Problem:
http://php.net/manual/de/mysqli-stmt.bind-param.php
gute idee
Hier das log von apache :
[Tue Feb 17 16:37:43.696411 2015] [:error] [pid 3417] [client 127.0.0.1:59851] PHP Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /var/www/html/formscript.php on line 36, referer: http://localhost/formular.html
das heißt hier muss der Fehler sein:
Code: PHPif(!$stmt){ die ('Es konnte kein SQL-Query vorbereitet werden: '.db->error); }
@mat
du hast recht.. hatte ich noch vergessen raus zunehmen...
Hier nochmal der aktuelle Stand des komplettn skripts..
Code: PHP<?php error_reporting(E_ALL); ini_set('display_errors',1); $db = new mysqli('localhost', 'root', 'password', 'database'); if (mysqli_connect_errno()) { die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')'); } if('POST' == $_SERVER['REQUEST_METHOD']){ if (!isset($_POST['RechnungsNr'], $_POST['Betrag'], $_POST['Nachname'])) { die ('Benutzen sie nur Formulare von der Homepage.'); } if (('' == $rechnungsnr = trim($_POST['RechnungsNr'])) or ('' == $betrag = trim($_POST['Betrag'])) or ('' == $nachname = trim($_POST['Nachname']))) { die ('Bitte Pflichtfelder ausfuellen.'); } /* $vorname = $_POST['Vorname']; $adresse = $_POST['Adresse']; $notiz = $_POST['Notiz']; $datum = $_POST['Datum']; */ $sql = "INSERT INTO calculation(RechnungsNr, Betrag, Nachname) VALUES ('".$_POST['RechnungsNr']."','".$_POST['Betrag']."','".$_POST['Nachname']."')"; $stmt = $db->prepare($sql); if(!$stmt){ die ('Es konnte kein SQL-Query vorbereitet werden: '); } $stmt->bind_param('ids', $rechnungsnr, $betrag, $nachname); if(!$stmt->execute()){ die ('Query konnte nicht ausgefuehrt werden: '.$stmt->error); } } ?>
Okay.. ich habs jetzt soweit das apache keine error mehr bringt...
und jetzt bekomm ich beim klicken das Buttons im Formular die Meldung:
Es konnte kein SQL-Query vorbereitet werden:
Immer noch einige Fehler drinnen. Versuch mal das:
Code: PHP<?php error_reporting(E_ALL); ini_set('display_errors',1); $db = new mysqli('localhost', 'root', 'password', 'database'); if (mysqli_connect_errno()) { die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')'); } $rnr = trim($_POST['RechnungsNr']); $betrag = trim($_POST['Betrag']); $nachname = trim($_POST['Nachname']); if (!$rnr || !$betrag || !$nachname) { die ('Bitte Pflichtfelder ausfuellen.'); } $stmt = $db->prepare("INSERT INTO calculation(RechnungsNr, Betrag, Nachname) VALUES (?,?,?)"); if(!$stmt){ die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error); } $stmt->bind_param('ids', $rnr, $betrag, $nachname); if(!$stmt->execute()){ die ('Query konnte nicht ausgefuehrt werden: '.$stmt->error); } } ?>
funktz!
danke... ich finde es lustig ich hab mich an http://tut.php-quake.net gehalten.. tutorials darf man auch nicht immer vertrauen ...
..obwohl es so eine schöne offizielle doku zu php auf php.net gibt..
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025