"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

mysql insert ??

Bunny 17.02.2015 - 15:33 4059 21
Posts

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25375
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

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
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: PHP
	if(!$stmt){
		die ('Es konnte kein SQL-Query vorbereitet werden: '.db->error);
	}

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
@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);
	}

}
?>


In der Datenbank ist RechnungsNr ein Integer Typ, Betrag ein Float Typ und Nachname Varchar .. deshalb ergibt sich bei bind_params('ids'......
Bearbeitet von Bunny am 17.02.2015, 16:51

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
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:

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25375
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);
	}

}
?>

Bunny

Addicted
Avatar
Registered: Oct 2002
Location: Austria
Posts: 525
:D :D :D :D



funktz! :)

danke... ich finde es lustig ich hab mich an http://tut.php-quake.net gehalten.. tutorials darf man auch nicht immer vertrauen ...

Nico

former person of interest
Registered: Sep 2006
Location: -
Posts: 4082
..obwohl es so eine schöne offizielle doku zu php auf php.net gibt..
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz