-
Hallo liebe Forums Mitgleider,
ich habe mal wieder eine Frage...dieses mal geht es um Fehlermeldungen, worauf ich leider keine Lösung weiß.
Ich bin dabei, meine Seite etwas sicherer zu gestalten, ich möchte verhindern, das man eine SQL-Injektion machen kann.
Ich wollte nun die Datentrückgabe etwas sicherer gestallten, mit Hilfe von dem Prepared Statement. Nun werden mir aber 2 Warnungen und ein fatal error ausgegeben.
1. Warning: mysqli_prepare() expects parameter 1 to be mysqli, resource given
2. Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, null given
3. Fatal error: Call to undefined function mysql_stmt_execute()
Das ist mein Code dazu:
Ich hoffe, das ihr mir helfen könnt.PHP-Code:$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
mysql_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $ID);
mysqli_stmt_fetch($stmt);
//das Statement schließen
mysql_stmt_close($stmt);
//Verbindung schließen
mysqli_close();
-
Zeig mal wie du die Connection $res erstellst
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
PHP-Code:
$res = mysql_connect("localhost","root","Passwort") or die ("Keine Verbindung moeglich"); // Verbindung zum Server
-
Wenn du mit mysqli arbeiten willst, dann solltest du auch den mysqli-Connect verwenden. mysql und mysqli sind grundsätzlich nicht kombinierbar. Also alle deine Befehle umschreiben
Nachtrag: Am besten gleich auf die OO-Variante umsteigen und mit der MySQLi-Klasse arbeitenPHP-Code:$res = mysqli_connect("localhost","root","Passwort") or die ("Keine Verbindung moeglich");
....
mysqli_stmt_execute($stmt);
...
mysqli_stmt_close($stmt);
...
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
ok...
Nun habe ich aber noch mehr Fehlermeldungen also vorher
1. Warning: mysqli_prepare() expects parameter 1 to be mysqli, resource given in...
2. Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, null given in...
3. Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, null given in...
4. Warning: mysqli_stmt_bind_result() expects parameter 1 to be mysqli_stmt, null given in...
5. Warning: mysqli_stmt_fetch() expects parameter 1 to be mysqli_stmt, null given in...
usw.
Wieso werden die mir angezeigt und was ist daran falsch?
was meinst du mit: "Am besten gleich auf die OO-Variante umsteigen und mit der MySQLi-Klasse arbeiten" ?Geändert von Big-A (06.02.12 um 11:09 Uhr)
-
OO-Variante = Objektorientierte Variante
http://ch.php.net/manual/de/mysqli.prepare.php -> Beispiel 1: Objektorientierter Stil
DU gehts nach Beispiel 1: Prozeduraler Stil
Zud en Fehlern. Hab vergessen, bei mysqli_connect() musst du als 4ten Parameter den DB-Namen mitgeben.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Das Problem ist nun aber das, wenn ich den DB-Namen mit angebe, dann wird mir die gesamte DB nicht mehr geladen.
-
Fehlermeldung und Code?
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ok, Verbindung steht wieder...aber nun kommt das!?
1. Warning: mysqli_stmt_bind_param() [function.mysqli-stmt-bind-param]: Number of elements in type definition string doesn't match number of bind variables 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...
-
Zeile 45 ist es.
Ne, im Ernst. Seit du das letzte mal dein Code gepostet hast, hast du diverse Änderungen gemacht. Diese sehen wir hier nicht. Ergo können wir nur raten. Und ich rate nun mal, dass du in de Zeile mit dem mysqli_stmt_bind_param() oder davor irgend einen Fehler hast.
Wenn du die Fehlermeldung liest, könnte es also sein, dass du zu wenig oder zu viele Parameter mitgibst.
Also, her mit dem Code.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Sorry...
oderPHP-Code: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();
Habe beides ausprobiertPHP-Code:$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();
-
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.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Wenn ich mir meine Variablen ausgeben lasse, kommt überall das raus, was ich grade neu eingegeben habe:
Und mir werden dann noch genau 3 Fehler angezeigt:PHP-Code: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)
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-Code:$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.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
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
Ähnliche Themen
-
Fatal Error
Von Sasser im Forum PHPAntworten: 4Letzter Beitrag: 18.01.11, 23:01 -
error LNK2019 & fatal error LNK1120
Von HORNSWOGGLE im Forum C/C++Antworten: 4Letzter Beitrag: 24.11.09, 16:31 -
Möglich einen Fatal Error abzufangen und darzustellen?
Von ThirdKeeper im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 10.01.09, 11:45 -
Fatal Error
Von Soapp im Forum PHPAntworten: 2Letzter Beitrag: 15.10.06, 19:49



1Danke

Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren