xaero1982
Goto Top

PHP + MySQL Insert INTO

Moin Zusammen,

ich bin dabei ein bestehendes Registrierungsformular anzupassen.

Das ursprüngliche Formular war so aufgebaut, dass lediglich Updates an die Datenbank geschickt worden sind, weil die Einträge bereits vorhanden waren mit fixen Terminen.

Bei dem anderen brauche ich das nicht. Hier arbeite ich mit Inserts. Und das will nicht gehen. Die Updates gingen problemlos.

Darüber stelle ich die Verbindung her:

<?php

$dbserver = "xxx";  
$dbu = "xxx";  
$pass = "xxx";  
$db = "xxx";  

error_reporting(E_ALL);
$mysqli = new mysqli($dbserver, $dbu, $pass, $db);

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);  
    exit();
}
?>
Das klappt auch alles.

Dann habe ich folgendes in der Datei, die aufgerufen wird zur Registrierung

	$random = $_POST['zufall'];  
	$vorname = $_POST['vorname'];  
	$nachname = $_POST['nachname'];  
	$email = strtolower($_POST['emailadresse']);  
	
	$mysqli->query("Insert INTO xxx (A_Vorname, A_Nachname, A_Email, A_Nummer) VALUES ('".$vorname."', '".$nachname."','".$email."',".$random);  

$random ist eine per Zufall generierte Zahl, die ich für einen anderen Zweck benötige.

Wenn ich mir das ganze mit einem Echo ausgeben lasse bekomme ich das:
Insert INTO xxx (A_Vorname, A_Nachname, A_Email, A_Nummer) VALUES ('Test', 'test','test@test.de', 8805)  

Nehme ich diese Zeile und füge sie über phpmyadmin ein gehts problemlos.

Wenn ich es über meine Seite mache tut sich gar nichts. Nicht mal eine Fehlermeldung.

Selbst wenn ich es einfach mal hard code
$mysqli->query("Insert INTO xxx (A_Vorname, A_Nachname, A_Email, A_Nummer) VALUES ('Hans','Peter','hans.peter@gmx.de',1234");  
wird nichts eingefügt.

Aber wenn ich einfach einen Eintrag über PHPMyAdmin einfüge und dann diesen hard gecodet update über den Updatebefehl geht das problemlos.

Webserver ist bei Ionos!

Any ideas?

Grüße

Content-ID: 6286796142

Url: https://administrator.de/contentid/6286796142

Ausgedruckt am: 19.12.2024 um 03:12 Uhr

6247018886
6247018886 09.03.2023 aktualisiert um 11:54:01 Uhr
Goto Top
Moin.
VALUES ('".$vorname."', '"
Autsch wenn ich das schon sehe 🤮 ... Welcome SQLINJECTION ...
https://www.php.net/manual/de/mysqli.quickstart.prepared-statements.php
Wenn ich es über meine Seite mache tut sich gar nichts. Nicht mal eine Fehlermeldung.
Fehlermeldung erhältst du wenn du das ans Anfang des Skriptes setzt
error_reporting(E_ALL);
ini_set('display_errors','On');  

Cheers briggs
Xaero1982
Xaero1982 09.03.2023 um 11:58:41 Uhr
Goto Top
Darum ging es mir aber gerade nicht und ist schon korrigiert.

Es ging mir um die Tatsache, dass nichts eingefügt wird face-smile
6247018886
Lösung 6247018886 09.03.2023 aktualisiert um 12:30:18 Uhr
Goto Top
da fehlt die schließende Klammer im SQL am Ende.
$mysqli->query("Insert INTO xxx (A_Vorname, A_Nachname, A_Email, A_Nummer) VALUES ('".$vorname."', '".$nachname."','".$email."',".$random.")");  
Und wie gesagt Error-Reporting wie oben einschalten dann siehst du es auch.
godlie
godlie 09.03.2023 um 12:29:04 Uhr
Goto Top
Hallo,

du hast beim Escapen deiner Quotes einen Fehler:

$mysqli->query("Insert INTO xxx (A_Vorname, A_Nachname, A_Email, A_Nummer) VALUES ('".$vorname."', '".$nachname."','".$email."',".$random.")");  

Wobei wenn du mit " als Qute arbeitest, kannst du dir das auch so aufbauen:
$mysqli->query("Insert INTO xxx (A_Vorname, A_Nachname, A_Email, A_Nummer) VALUES ('$vorname', '$nachname','$email',$random)");  
Xaero1982
Xaero1982 09.03.2023 um 12:52:40 Uhr
Goto Top
Zitat von @6247018886:

da fehlt die schließende Klammer im SQL am Ende.
$mysqli->query("Insert INTO xxx (A_Vorname, A_Nachname, A_Email, A_Nummer) VALUES ('".$vorname."', '".$nachname."','".$email."',".$random.")");  
Und wie gesagt Error-Reporting wie oben einschalten dann siehst du es auch.

Gnarf face-smile danke dir. Ja, hatte ich dann angestellt, aber dennoch nicht gesehen ...

Nun gehts
maretz
maretz 09.03.2023 um 21:59:52 Uhr
Goto Top
ich würde mir mal das konstrukt überlegen - es gibt nämlich extra dafür das "insert into ... on duplicate key ..." - wenn man zB. einen vorhandenen Eintrag aktuallisieren will (falls vorhanden) oder neu anlegen (wenn nicht vorhanden). Ist natürlich die Frage ob das gewünscht ist - bei nem öffentlichen Reg.-Formular ggf. eher nicht, intern kann es ja durchaus gewünscht sein.
Xaero1982
Xaero1982 09.03.2023 um 22:00:56 Uhr
Goto Top
Interessant, aber nicht gewünscht und nicht benötigt.... face-smile