Ich habe einige Schwierigkeiten beim Versuch, eine Verbindung zu meiner Datenbank mit PHP einzurichten ... Ich habe so viele Dinge ausprobiert, meine SQL-Abfragen doppelt überprüft, und einfach nicht ' Warum funktioniert es nicht? Ich bin immer noch ein Neuling, also denke ich, dass mir noch etwas fehlt. Ich versuche eine App zu erstellen, die die Benutzerregistrierung übernimmt.Verbindung mit MySQL mit PHP nicht möglich - Android Studio
Dies ist der Fehler, den ich in Android Studio bekommen bin:
org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
Mein PHP-Code ist:
<?php
$servername = "my server here";
$username = "my username here";
$password = "my password here";
$dbname = "my db here";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO User (username, email, passcode) VALUES (?, ?, ?)";
if (mysqli_query($conn, $sql)) {
$last_id = mysqli_insert_id($conn);
echo "New record created successfully. Last inserted ID is: " . $last_id;
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
Ein weiterer wichtiger Punkt, der Postbote Plugin Überprüfung und Verifizierung der url ich dies:
Error: INSERT INTO User (username, email, passcode) VALUES (?, ?, ?)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, ?, ?)' at line 1
Ich verstehe nicht wirklich, warum das ein Fehler ist? Da ich Input in Form von dem Benutzer erwarten ...
Wie in den weiteren Informationen, das ist der Code von meinem RegisterActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
final EditText etUsername = (EditText)findViewById(R.id.etUsername);
final EditText etEmail = (EditText)findViewById(R.id.etEmail);
final EditText etPassword = (EditText)findViewById(R.id.etPassword);
final Button btnRegister = (Button)findViewById(R.id.btnRegister);
if (btnRegister != null) {
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String username = etUsername.getText().toString();
final String email = etEmail.getText().toString();
final String passcode = etPassword.getText().toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
if (success) {
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
RegisterActivity.this.startActivity(intent);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
builder.setMessage("Register Failed")
.setNegativeButton("Retry", null)
.create()
.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
RegisterRequest registerRequest = new RegisterRequest(username, email, passcode, responseListener);
RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
queue.add(registerRequest);
So, weiß jemand, wo das herkommt und wo sonst sollte ich nachsehen?
Prost!
Sie ‚Standard‘ SQL mit vorbereiteten Anweisungen mischen. vorbereitete Anweisungen ist der bevorzugte Weg, aber Sie haben keine Werte dafür angegeben! – Jeff
lesen Sie über vorbereitete Aussagen [hier] (http://php.net/manual/en/mysqli.prepare.php) oder [hier] (http://php.net/manual/en/mysqli.quickstart.prepared- Statements.php). Im Allgemeinen haben Sie vergessen, Werte zu binden – Jeff