2016-03-21 10 views
0

Ich versuche, eine App zu erstellen, wo Sie in einer mysqli db von Ihrem eigenen Android-Gerät registrieren. Ich bekomme viele Warnungen in meinem PHP-Skript.PHP Errorcode: erwartet, dass Parameter 1 mysqli ist

Warning: mysqli_prepare() erwartet Parameter 1 sein Mysqli, gegeben boolean in /home/a3074158/public_html/Register.php auf Leitung 12 Warning: mysqli_stmt_bind_param() erwartet Parameter 1 in mysqli_stmt, null gegeben werden, /home/a3074158/public_html/Register.php auf Leitung 13

Warning: mysqli_stmt_execute() erwartet Parameter 1 in /home/a3074158/public_html/Register.php am 14. Zeile mysqli_stmt, null gegeben werden

Warning : mysqli_stmt_close() erwartet Parameter 1 als mysqli_stmt, null in /home/a3074158/public_html/Register.php in Zeile 16

Warnung: mysqli_close() erwartet 1 Parameter Mysqli, null gegeben in /home/a3074158/public_html/Register.php on line 19

Dies ist mein Code zu sein:

<?php 
$connect = mysqli_connect("localhost", "my_user", "my_password", "my_db"); 

if(!$connect){ 
die('Verbindung fehlgeschlagen: '. mysqli_connect_error()); 
} 

$name= $_Post["name"]; 
$alter= $_Post["alter"]; 
$passwort= $_Post["passwort"]; 
$username= $_Post["username"]; 

$statement = mysqli_prepare($connect, "Insert into User (name, `alter`, username, passwort) VALUES(?, ?, ?, ?)"); // edit after chris85 
mysqli_stmt_bind_param($statement,"siss", $user, $alter, $username, $passwort); 
mysqli_stmt_execute($statement); 

mysqli_stmt_close($statement); 


mysqli_close($connect); 

?> 

Es ist mein erster Versuch, irgendwelche Ideen/Tipps/Tutorials?

+0

Ihre Fehlermeldung ist aktiv und auf 'E_ALL' gesetzt? => '$ connect = mysqli_connect' =>' if ($ conn-> connect_error) ' – fusion3k

+0

Danke. Angepasst, meinst du das? –

+0

Sie haben die bedingte Bearbeitung "! $ Connect> connect_error" verpasst. – chris85

Antwort

1

sollte es

sein
if(!$connect){ 
    die('Verbindung fehlgeschlagen: '. mysqli_connect_error()); 
} 

Sie sind also nicht, dass bedingte Schlagen und die prepare versagt.

Dies ist, weil Sie procedural Methoden verwenden und nicht object oriented Methoden.

bearbeiten

Als user @ chris85 unten ausgeführt, sind Sie auch ein MySQL Reserved Word in Ihrer Tabellenstruktur unter Verwendung von ändern verwenden.

Wenn Sie den Spaltennamen nicht ändern möchten, müssen Sie den Spaltennamen mit Backticks maskieren: `alter`. Sie müssen dies bei jeder Abfrage der Spalte verwenden.

Verwandte Themen