buliwyf
Goto Top

Daten aus form werden nicht in mysql gespeichert? Hilfe :-)

Hallo Zusammen,

nun beschäftige ich mich mit PHP.
Eine html Seite mit POST Feldern gebaut, php script dazu mit einen insert zur mysql datenbank, aber die Daten kommen dort nicht an.

das html file mal vereinfacht:
<html>
<body>
<p> Bitte Namen eintragen.<br />
Senden Sie anschliessend das Formular ab. </p>
<form action ="eingabe.php" method = "post">  
   <p><input name ="vor" /> Vorname</p>  
   <p><input name ="nach" /> Nachname</p>  
   <p><input type ="submit" />   
   <p><input type ="reset" /> </p>  
   </form>
</body>
</html>

Das php dazu:

<html>
<body>
<?php
// Datenbankverbindungskonfiguration
$serverName = "testserver"; // Servername  
$connectionOptions = array(
    "Database" => "test",   
    "Uid" => "root",  
    "PWD" => ""  
);

// Verbindung zur Datenbank herstellen
$conn = sqlsrv_connect($serverName, $connectionOptions);

if($conn === false){
    die(print_r(sqlsrv_errors(), true));
}

// Variablen aus dem POST-Request
$Vorname = $_POST['vor'];  
$Nachname = $_POST['nach'];  

// SQL zum Einfügen der Daten
$sql = "INSERT INTO Anrede (Vorname, Name) VALUES (?, ?);";  
$params = array($Vorname, $Nachname);

$stmt = sqlsrv_query($conn, $sql, $params);
if($stmt === false){
    die(print_r(sqlsrv_errors(), true));
}

echo "Daten erfolgreich gespeichert.";  

sqlsrv_close($conn);
?>
	 </body>
	 </html>

die mysql datenbank heisst: test
die tabelle heisst: Anrede
es gibt nur 2 spalten:
Vorname varchar(20)
Name varchar (30)

beim ausführen speichert, übergibt das php aber nichts in die db?
Wo ist mein fehler bei diesem recht einfachen Beispiel?

Achso, ein mysql root pwd habe ich ersteinmal nicht vergeben.

Danke für eure Hinweise, Hilfe.

LG Stefan face-smile

Content-Key: 14091975640

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

Printed on: April 27, 2024 at 13:04 o'clock

Member: Michi91
Michi91 Feb 14, 2024 at 11:26:43 (UTC)
Goto Top
sqlsrv_connect ist für Verbindungen zu MSSQL und nicht für MySQL.

Schau dir mal https://www.w3schools.com/php/php_mysql_connect.asp an
Member: buliwyf
buliwyf Feb 14, 2024 at 11:54:22 (UTC)
Goto Top
Hallo,
habs geändert, allerdings weiterhin ohne Erfolg?

Was passt noch nicht?

LG Stefan
Member: Michi91
Michi91 Feb 14, 2024 updated at 11:59:06 (UTC)
Goto Top
Füge mal
ini_set('display_errors', 1);  
ini_set('display_startup_errors', 1);  
error_reporting(E_ALL);

ganz oben ein

und ein paar mehr Ausgaben in deinen Code ein. Dann sollte man ja sehen wo es stoppt.

if($stmt === false){
echo "Fehler";  
    print_r(sqlsrv_errors()); // Hier den richtigen Code, abhänig von der verwendeten Variante wählen
die();
}

Wenn du deine neue Variante einmal posten könntest wäre super, da wir nur nicht wissen ob du mysqli prozedural, als objekt oder PDO verwendet hast...
Member: em-pie
em-pie Feb 14, 2024 at 12:25:04 (UTC)
Goto Top
Moin,

Baue das mal, wie hier dargestellt um.

Also mit pdo und weise den Parameter-Membern man Datentypen zu (im Link der Part mit „sss“, bei dir dann „ss“.)
Member: StefanKittel
StefanKittel Feb 14, 2024 at 12:27:21 (UTC)
Goto Top
Moin,

wie immer gilt "Eingrenzen".

Zuerst gibts Du die Post-Werte in Deiner PHP-Datei nur aus.
Damit kann man sehen ob diese hier überhaupt richtig ankommen.

Du solltest Dir auch gleich angewöhnen nicht $_POST sondern filter_input zu verwenden.
https://www.w3schools.com/php/func_filter_input.asp


Dann erstellst Du Dir eine dbtest.php wo Du feste Werte in die DB schreibst.
$sql = "INSERT INTO Anrede (Vorname, Name) VALUES ("max", "mustermann");";    

Je nach Fehler kannst Du gezielt an der Stelle weiter machen.

Hier ein Beispiel für MySQL und PHP
https://www.w3schools.com/php/php_mysql_insert.asp

Stefan
Member: buliwyf
buliwyf Feb 14, 2024 at 12:37:09 (UTC)
Goto Top
Das wird zurückgegeben:

Fatal error: Uncaught TypeError: mysqli::__construct(): Argument #2 ($username) must be of type ?string, array given in /var/www/html/eingabe.php:16 Stack trace: /var/www/html/eingabe.php(16): mysqli->__construct() #1 {main} thrown in /var/www/html/eingabe.php on line 16

Line 16 wäre das hier:
$conn = new mysqli($serverName, $connectionOptions);
Member: buliwyf
buliwyf Feb 14, 2024 at 13:21:45 (UTC)
Goto Top
Wie filter_input ?
Was will ich denn filtern?

Die einfache Ausgabe per php passt.
Die Beispiele auf den Seitenpassen leider nicht zu meinem Beispiel face-sad
Member: Michi91
Michi91 Feb 14, 2024 at 13:29:49 (UTC)
Goto Top
Hey,
$conn = new mysqli($serverName, $connectionOptions);
muss
$conn = new mysqli($serverName, $username, $password);

sein.

Wenn dir PHP-Basiskenntnisse fehlen, solltst du vielleicht weiter vorne anfangen und erst die Sprache lernen ( https://www.w3schools.com/php/default.asp )

Grüße face-smile