2 Warnungen und einen fatal error...

:-( Sorry...

PHP:
	if ($stmt = $mysqli->prepare("SELECT * FROM Kundendaten")){
	
	$stmt->bind_param("s", $ID, $Firma, $Nachname, $Vorname, $Strasse, $Hausnummer,   $PLZ, $Ort, $telefonnummer, $Fax, $Mail, $Datum);
	$stmt->execute();
	$stmt->bind_result($district);
	$stmt->fetch();
	printf("%s is in district %s\n", $ID, $disstrict);
	$stmt->close();
	}
	
	$mysqli->close();

oder

PHP:
	$stmt = mysqli_prepare($res,"INSERT INTO Kundendaten (Firma, Nachname, Vorname, Strasse, Hausnummer, PLZ, Ort, Telefonnummer, Fax, Mail, Datum) VALUES (?, ?, ?,?, ?, ?,?, ?, ?,?, ?)");
			
			//Parameter daran binden
			mysqli_stmt_bind_param($stmt, $Firma, $Nachname, $Vorname, $Strasse, $Hausnummer, $PLZ, $Ort, $telefonnummer, $Fax, $Mail, $Datum);	
				
			//Preparde Statement ausführen
			mysqli_stmt_execute($stmt);
			
			mysqli_stmt_bind_result($stmt, $ID);

			mysqli_stmt_fetch($stmt);
			
			//das Statement schließen
			mysqli_stmt_close($stmt);
			
			//Verbindung schließen
			mysqli_close();

Habe beides ausprobiert
 
Also beim ersten. Was für Parameter willst du denn dort binden? Dein SQL hat keine Platzghalter für Parameter. Somit weiss MySQLi nicht was es mit $firma etc. anfangen soll.

Und bei welchem Versuch kommen welche Fehlermeldungen?
Gib auch mal alle deine zu bindenen Variablen mit var_dump() aus.
 
Wenn ich mir meine Variablen ausgeben lasse, kommt überall das raus, was ich grade neu eingegeben habe:
PHP:
object(mysqli)[1]

object(mysqli_stmt)[2]

string 'Musterhaus' (length=10)

string 'Muster' (length=6)

string 'Max' (length=3)

string 'Testweg' (length=7)

string '1' (length=1)

string '123456' (length=6)

string 'Musterhausen' (length=12)

string '123456789' (length=9)

string '987654321' (length=9)

string 'MMuster@mustermail.com' (length=22)

string '2012-02-06' (length=10)

Und mir werden dann noch genau 3 Fehler angezeigt:

1. Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, string given in...
2. Warning: mysqli_close() expects exactly 1 parameter, 0 given in...
3. Catchable fatal error: Object of class mysqli_stmt could not be converted to string in...


der Code sieht dazu so aus:

PHP:
	$stmt = mysqli_prepare($res,"INSERT INTO Kundendaten (Firma, Nachname, Vorname, Strasse, Hausnummer, PLZ, Ort, Telefonnummer, Fax, Mail, Datum) VALUES (?, ?, ?,?, ?, ?,?, ?, ?,?, ?)");
			var_dump($res);
			var_dump($stmt);
			var_dump($Firma);
			var_dump($Nachname);
			var_dump($Vorname);
			var_dump($Strasse);
			var_dump($Hausnummer);
			var_dump($PLZ);
			var_dump($Ort);
			var_dump($Telefonnummer);
			var_dump($Fax);
			var_dump($Mail);
			var_dump($Datum);
					
			//Parameter daran binden
			mysqli_stmt_bind_param($Firma, $Nachname, $Vorname, $Strasse, $Hausnummer, $PLZ, $Ort, $telefonnummer, $Fax, $Mail, $Datum);	
				
			//Preparde Statement ausführen
			mysqli_execute($stmt);
			
			mysqli_stmt_fetch($stmt);
			
			//das Statement schließen
			mysqli_stmt_close($stmt);
			
			//Verbindung schließen
			mysqli_close();
			
			//früher ($eintrag), übergabe der Daten
			mysql_query($stmt);
 
Ist $Firma das preparierte Statement?
Schau doch mal in der Doku nach, was als erster Parameter bei mysqli_stmt_bind_param() kommen muss.
 
ich weiß, weigentlich soll da vor $Firma noch $stmt kommen, jedoch wird mir dann vollgendes angegeben:

Warning: mysqli_stmt_bind_param() [function.mysqli-stmt-bind-param]: Number of variables doesn't match number of parameters in prepared statement in
 
Gut. Was ist laut Doku der 2te Paramter bei mysqli-stmt-bind-param()? Jepp, auch den hast du vergessen.

Procedural style:

bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] )

...

Parameter-Liste

stmt
Nur bei prozeduralem Aufruf: ein von mysqli_stmt_init() zurückgegebens Statementobjekt.

types
A string that contains one or more characters which specify the types for the corresponding bind variables:

Type specification chars Character Description
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets


var1
The number of variables and length of string types must match the parameters in the statement.

Nachtrag:
Ps. Ich habe noch nie mit mysqli gearbeitet - aber ich schaue mir die Doku an und sehe was an welcher Stelle verlangt wird
 
Ja ich habe leider noch verständniss Porbleme, da ich ein absoluter Anfänger bin :(
Aber ich will es halt lernen...

Vielleicht kannst du mir ja noch mal helfen, nun werden mir keine Fehlermeldungen mehr angegeben, jedoch werden die geänderten Daten nicht gespeichert. :(

PHP:
 if(isset($_POST["speichern"])){
						
	//das Statement vorbereiten, somit werden eigentlich nur die Daten zurückgeschicktn, die verändert wurden.
		$stmt = mysqli_prepare($res, 'UPDATE Kundendaten SET ID="?", Firma="?", Nachname="?", Vorname="?", Strasse="?", Hausnummer="?", PLZ="?", Ort="?", Telefonnummer="?", Fax="?", Mail="?", Datum="?" WHERE (ID ="?")');
			
			//Parameter daran binden
		mysqli_bind_param($stmt,'sssssssssssss', $Firma, $Nachname, $Vorname, $Strasse, $Hausnummer, $PLZ, $Ort, $Telefonnummer, $Fax, $Mail, $Datum);	
			
		 
			$ID= $_POST["ID"];
			$Firma= $_POST["Firma"]; 
			$Nachname = $_POST["Nachname"];
			$Vorname = $_POST["Vorname"];
			$Strasse = $_POST["Strasse"];
			$Hausnummer = $_POST["Hausnummer"];
			$PLZ = $_POST["PLZ"];
			$Ort = $_POST["Ort"];
			$Telefonnummer = $_POST["Telefonnummer"];
			$Fax = $_POST["Fax"];
			$Mail = $_POST["Mail"];
			$Datum = $_POST["Datum"]; $Firma= $_POST["Firma"]; 
	
			
			//prepared ausführen
			mysqli_execute($stmt);
			
			//statement schließen
			#mysqli_stmt_close();
			
			mysqli_query($stmt);
			
			
		include("Abfrage.php"); //öffnen die if-abfragen, wegen der Formularfelder
				
		//verhindert gewünschte Sonderzeichen
		$ID = preg_replace('/(<|>)/', '', $ID); 
		$Firma = preg_replace('/(<|>)/', '', $Firma); 
		$Nachname = preg_replace('/(<|>)/', '', $Nachname); 
		$Vorname = preg_replace('/(<|>)/', '', $Vorname); 
		$Strasse = preg_replace('/(<|>)/', '', $Strasse); 
		$Hausnummer = preg_replace('/(<|>)/', '', $Hausnummer); 
		$PLZ = preg_replace('/(<|>)/', '', $PLZ); 
		$Ort = preg_replace('/(<|>)/', '', $Ort);
		$Telefonnummer = preg_replace('/(<|>)/', '', $Telefonnummer); 
		$Fax = preg_replace('/(<|>)/', '', $Fax); 
		$Mail = preg_replace('/(<|>)/', '', $Mail); 
		$Datum = preg_replace('/(<|>)/', '', $Datum); }
				
	//Verbindung schließen
	mysqli_close($res);
 
item: Warum definierst du 13 Strings wo du doch 'nur' 11 Parameter hast?

item: Schau nochmals das Beispiel in der Doku an. Mit dem 2ten Parameter übergibst du dem mysqli um was für ein Typ es sich handelt. Dann musst du im SQL die ? nicht noch zusätzlich in "" setzen. Das macht mysqli für dich

item: Warum ist dein erstes und letztes ? im SQL die id, bei mysqli_bind_param() aber nicht mehr. Ergo auch die ID übergeben

item: Die id wird numerisch sein. also auch so behandeln

item: Warum setzt du auf der letzten Zeile wo du die Variable $datum abfüllst auch nochmals die $Firma ab?

item: Wenn du ein Update mit dem Schlüssel ID durchführst, musst du die ID nicht mehr überschreiben

PHP:
$sql = <<<SQL
UPDATE 
	Kundendaten 
SET 
	Firma = ?, 
	Nachname = ?, 
	Vorname = ?, 
	Strasse = ?, 
	Hausnummer = ?, 
	PLZ = ?,
	Ort = ?, 
	Telefonnummer = ?, 
	Fax = ?, 
	Mail = ?, 
	Datum = ? 
WHERE 
	ID = ?
SQL;

$stmt = mysqli_prepare($res, $sql);
            
mysqli_bind_param($stmt,'sssssssssssi', 
	$Firma, 
	$Nachname, 
	$Vorname, 
	$Strasse, 
	$Hausnummer, 
	$PLZ, 
	$Ort, 
	$Telefonnummer, 
	$Fax, 
	$Mail, 
	$Datum, 
	$ID
);
 
Zurück