Frage <form /> daten kommen in phpmyadmin nicht an, wieso?

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Werbung

Jetzt auf elektrisches Fahren umstellen, Umwelt schonen und 1.500km kostenlosen Strom von Tesla bekommen. https://ts.la/carsten15473.

rflex96

Neues Mitglied
24 April 2019
7
0
1
23
Moin,

ich habe zwei Dateien.
  1. Register (Eingabe von Daten)
  2. Enter (Ausgabe von Daten)
Mein Problem ist, dass ich meine Daten in register.php eingeben kann, diese allerdings nicht an meine bestehende user Tabelle in localhost/phpmyadmin ankommen.

Den INSERT Befehl hab ich in phpmyadmin gecheckt, der ist richtig. Eine Verbindung krieg ich ebenfalls hin. Wenn ich die über das Formular eingegebene Daten, nachdem senden abfrage, erhalte ich sie alle ausgegeben. Dennoch kommen die nicht in meiner Datenbank an. Ich verstehe nicht wieso? Fehlt es an einer Schnittstelle? Mein User "richard" hat auf phpmyadmin alle Rechte.

Hat jemand einen Ansatz für mich?

Aufbau (Ich versuchs mal so übersichtlich wie möglich darzustellen ^^):

register.php
<!doctype html>
...
<form action="enter.php" method="post">
<input type="text" name="feld1" ... />
<br>
<select name="feld2">
<option>..</option>
<option>..</option>
</select>
...
</form>
</html>

enter.php
<html>
...
</html>
<?php
error_reporting(E_ALL);

define ('HOST', 'localhost');
define ('BENUTZER','richard');
define ('KENNWORT','');
define ('DATENBANK', 'userbase');

$db_link = mysqli_connect (HOST,
BENUTZER,
KENNWORT,
DATENBANK);

if ($db_link) {
echo "Verbindung erstellt: ";
print_r ($db_link);
} else {
die('keine Verbindung möglich: '. mysqli_error());
}



if(isset($_POST['submit'])){
$feld1 = $_POST['feld1'];
$feld2 = $_POST['feld2'];


$sql = "INSERT INTO user (feld1,feld2) VALUES($feld1, $feld2,NOW());";

// $abfrage = "SELECT $feld1 FROM user";
// echo "$abfrage";

}

?>


Ausgabe auf enter.php:
Verbindung erstellt: mysqli Object ( [affected_rows] => 0 [client_info] => mysqlnd 5.0.12-dev - 20150407 - $Id: 7cc7cc96e675f6d72e5cf0f267f48e167c2abb23 $ [client_version] => 50012 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array ( ) [field_count] => 0 [host_info] => localhost via TCP/IP [info] => [insert_id] => 0 [server_info] => 5.5.5-10.1.38-MariaDB [server_version] => 50505 [stat] => Uptime: 8510 Threads: 1 Questions: 1811 Slow queries: 0 Opens: 26 Flush tables: 1 Open tables: 20 Queries per second avg: 0.212 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 476 [warning_count] => 0 )



LG
 

rflex96

Neues Mitglied
24 April 2019
7
0
1
23
ja in der register.php Datei:
<input type="submit" name="submit" value="Senden" />

hab ich nun mit einer foreach schleife getan. Alle Eingegebenen Werte werden auf der enter.php ausgegeben inkl. submit.

In der Datenbank landen die trotzdem nicht :/
 

Sailor

Aktives Mitglied
14 Juli 2017
413
50
28
Zwei Dinge fallen mir auf. Du definierst eine Variable $sql...
$sql = "INSERT INTO user (feld1,feld2) VALUES($feld1, $feld2,NOW());";
Was macht du damit? Da ich den restlichen Code nicht kenne, kann ich nur vermuten ... aber stelle sicher, dass der INSERT INTO richtig verwendet wird... in der Form.
PHP:
INSERT INTO table_name (column1, column2, column3,..) VALUES ( value1, value2, value3,..);
siehe https://www.geeksforgeeks.org/sql-insert-statement/
Dann willst du 3 Werte übergeben... definierst aber nur 2 Spalten im INSERT Befehl?
 

rflex96

Neues Mitglied
24 April 2019
7
0
1
23
zu ding 1: mysqli_query($db_link, $sql)

hab nun recherchiert und es umgeändert in:
if (mysqli_query($db_link, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($db_link);
}

Als Fehlermeldung erhalte ich:
Error: INSERT INTO user (feld1,feld2,feld3 ... feld17) VALUES(Ausgabe1, Ausgabe2, Ausgabe 3 .... Ausgabe 16,NOW());
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'feld1,feld2,feld3 ... ,a' at line 1

___

... = ich hab im Formular insgesamt 17 Felder.
Ausgabe = Das was ich im input eingegeben habe

Der Insert Befehl ist richtig. Wenn ich den in phpmyadmin eingebe, landen alle Werte in der vorgesehenen Spalte.

Liegt es vielleicht an der mysqli_query($db_link, $sql) Zeile?


Ding 2: Da ist was beim kopieren verloren gegangen, hast aber grds. recht.
btw: Wie machst du diese Codezeilen? :D
 

Sailor

Aktives Mitglied
14 Juli 2017
413
50
28
Die einfache Frage zuerst... Code einfügen.
In de Kopfzeile des Eingabefeldes für deine Beträge findest du ein '...' (direkt neben den Smileys, die du ja schon gefunden hast). Dahinter verbirgt sich der Punkt 'einfügen' und dort unter andere auch der Punkt 'Code' einfügen.

Nach der Fehlermeldung, die du postest, ist da ein Syntaxfehler... hmmm... und du sollst die Doku deiner MariaDB konsultieren. Warst du damit erfolgreich?

Ich kann dir aber hier folgendes empfehlen - nutze für deine Datenbankgeschichten PDO!
Schau mal hier...
https://www.php-einfach.de/mysql-tutorial/daten-einfuegen/
Hat einige Vorteile und macht einiges einfacher und sicherer.
 
Reactions: rflex96

rflex96

Neues Mitglied
24 April 2019
7
0
1
23
Das dürfte sich schwer gestalten, da ich keine Maria Datenbank verwende :frown:

Ich schau mir mal den PDO Teil an. Danke Dir
 

rflex96

Neues Mitglied
24 April 2019
7
0
1
23
So ich hatte jetzt mal alles noch 2 mal durchgeguckt, und den Hasen im Pfeffer gefunden. Eines meiner Input Felder hatte den namen "groß". Offenbar hat das ß für Verkehrsstau gesorgt, nachdem ich nun mit "ss" umschrieben habe, haben alle Daten ihren Weg in die Datenbank gefunden..

Nun erscheint allerdings eine weitere Fehlermeldung:

PHP:
Duplicate entry 'jonald' for key 'PRIMARY'
mein Primärschlüssel name=benutzername ist ein Varchar (12) Input Feld. Eine Integer ID würde hier nichts bringen, weil das system prüfen soll, ob der benutzername schon vergeben ist.

Ich habe in meiner DB das Feld schon als unique gesetzt.
Trotz der Fehlermeldung, erreicht der Eintrag die DB.

Habt ihr hierfür auch einen Ansatz?
 
Werbung: