Via php/html etwas in die datenbank schreiben

SQL, Dateimanagement - Sprachunabhängige Datenhaltung
sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Mi Jun 22, 2016 4:20 pm

Xin hat geschrieben: Mehr Klammern setzen ;)
Habs jetzt so:

Code: Alles auswählen

<?php
   $db = mysqli_connect("127.0.0.1", "root", "julian", "phpdb");
   $add = mysqli_query($db, "INSERT INTO usertable (Name, Age) VALUE ('Alex', 29)");
?>       
So habs jetzt so, nun hab ich aber das Problem nesteht weiterhin :(

mit diesem Code klappt das:

Code: Alles auswählen

    $insert = mysqli_query($db, "INSERT INTO usertable (ID, FirstName, LastName, Age) VALUE ('2', 'Top', 'flop', 3)");
Liegt das Dann daran, dass beim Oberen kein ID mit drin ist und das, weils kein AI ID ist das nicht automatisch macht ?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8569
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Via php/html etwas in die datenbank schreiben

Beitrag von Xin » Mi Jun 22, 2016 4:47 pm

sashpta hat geschrieben:
Xin hat geschrieben:mit diesem Code klappt das:

Code: Alles auswählen

    $insert = mysqli_query($db, "INSERT INTO usertable (ID, FirstName, LastName, Age) VALUE ('2', 'Top', 'flop', 3)");
Liegt das Dann daran, dass beim Oberen kein ID mit drin ist und das, weils kein AI ID ist das nicht automatisch macht ?
Ich kenne Deine Tabelle nicht :)

Wenn Deine Tabelle Pflichtfelder hat, die Du nicht angibst, würde ich mir $insert mal genauer angucken. Da könnte auch "Nene, so abba nich" drin stehen. :)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Mi Jun 22, 2016 5:02 pm

Danke hat jetzt geklappt :)

Mal ne andere Frage,
ich hab jetzt ne DB erstellt, die heißt "Forum".
Da habe ich ne Tabelle

Code: Alles auswählen

create table user (Username Char(16) primary key, Email Char(32), Password CHAR(16));

und möchte jetzt noch eine Tabelle machen, die so aussieht:

Code: Alles auswählen

create table eintrag (eintragID INT auto_increment primary key, username, Betreff Char(16), Thema Char(16)); 
der username in der Tabelle "Eintrag" soll der username von der Tabelle "User" sein, wie mach ich das denn, dass das so zusammen ist? oder geht da einfach
"Username Char(16) primary key" ? aber dann hätte ich ja 2 mal nen primary key in der Tabelle "Eintrag", was ja eigentlich nicht sein
Zuletzt geändert von sashpta am Mi Jun 22, 2016 6:02 pm, insgesamt 1-mal geändert.

mfro
Beiträge: 323
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von mfro » Mi Jun 22, 2016 5:59 pm

sashpta hat geschrieben:...
Mal ne andere Frage,
ich hab jetzt ne DB erstellt, die heißt "Forum".
Da habe ich ne Tabelle

Code: Alles auswählen

create table user (Username Char(16) primary key, Email Char(32), Password CHAR(16));

und möchte jetzt noch eine Tabelle machen, die so aussieht:

Code: Alles auswählen

create table eintrag (eintragID INT auto_increment primary key, username, Betreff Char(16), Thema Char(16)); 
der username in der Tabelle "Eintrag" soll der username von der Tabelle "User" sein, wie mach ich das denn, dass das so zusammen ist? oder geht da einfach
"Username Char(16) primary key" ? aber dann hätte ich ja 2 mal nen primary key in der Tabelle "Eintrag", was ja eigentlich nicht sein soll.
Was Du suchst, ist ein "foreign key".

Code: Alles auswählen

CREATE TABLE eintrag (eintragID INT AUTO_INCREMENT PRIMARY KEY,
                                   username  CHAR(16),
                                   INDEX user_ind(username),
                                   FOREIGN KEY (username) REFERENCES user(Username)
                                   ON DELETE CASCADE;
Das bedeutet im wesentlichen, daß username in einem eintrag-Record einen gültigen Eintrag aus der User-Tabelle haben muss. "ON DELETE CASCADE" bedeutet, dass alle "eintrag"-Records eines Users gelöscht werden, wenn der User-Record gelöscht wird. Damit das flott geht, definieren wir gleich noch einen Index auf der username-Spalte der "eintrag"-Tabelle.
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Mi Jun 22, 2016 6:17 pm

mfro hat geschrieben:

Code: Alles auswählen

    CREATE TABLE eintrag (eintragID INT AUTO_INCREMENT PRIMARY KEY,
                                       username  CHAR(16),
                                       INDEX user_ind(username),
                                       FOREIGN KEY (username) REFERENCES user(Username)
                                       ON DELETE CASCADE;

Das bedeutet im wesentlichen, daß username in einem eintrag-Record einen gültigen Eintrag aus der User-Tabelle haben muss. "ON DELETE CASCADE" bedeutet, dass alle "eintrag"-Records eines Users gelöscht werden, wenn der User-Record gelöscht wird. Damit das flott geht, definieren wir gleich noch einen Index auf der username-Spalte der "eintrag"-Tabelle.
Oke danke, das hat schon mal geklappt mit dem Tabelle erstellen, wie füge ich da jetzt etwas ein? Weil wenn ich versuche etwas in "eintrag" rein zuschreiben geht das natürlich nicht, da er ja den username von "user" haben möchte, allerdings, wenn ich in "user" was reinschreibe ist das nicht in "eintrag" drinnen.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8569
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Via php/html etwas in die datenbank schreiben

Beitrag von Xin » Mi Jun 22, 2016 6:26 pm

sashpta hat geschrieben:wenn ich in "user" was reinschreibe ist das nicht in "eintrag" drinnen.
Da ist wohl eher die Frage, was Du in "user" reinschreibst.
Das sollte entsprechend ein Foreign Key sein, womit da entsprechend das drin stehen muss, was Du in der User-Tabelle als Primary-Key hast.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Mi Jun 22, 2016 6:37 pm

Xin hat geschrieben: Da ist wohl eher die Frage, was Du in "user" reinschreibst.
Das sollte entsprechend ein Foreign Key sein, womit da entsprechend das drin stehen muss, was Du in der User-Tabelle als Primary-Key hast.
Also wenn ich

Code: Alles auswählen

INSERT INTO user (Username, email, password) value ('Hans', 'fsdsd', 'dfsf')); 
mache und dann

Code: Alles auswählen

SELECT * FROM eintrag;
meint das, dass "eintrag" leer wär

mfro
Beiträge: 323
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von mfro » Mi Jun 22, 2016 7:43 pm

sashpta hat geschrieben: Also wenn ich

Code: Alles auswählen

INSERT INTO user (Username, email, password) value ('Hans', 'fsdsd', 'dfsf')); 
mache und dann

Code: Alles auswählen

SELECT * FROM eintrag;
meint das, dass "eintrag" leer wär
Klar. Was soll da auch drinstehen? Du hast ja nichts reingeschrieben.
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

sashpta
Beiträge: 104
Registriert: Fr Dez 12, 2014 2:55 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von sashpta » Mi Jun 22, 2016 7:48 pm

Und wie schreib ich dann was rein?

INSERT INTO eintrag geht ja nicht

mfro
Beiträge: 323
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Via php/html etwas in die datenbank schreiben

Beitrag von mfro » Mi Jun 22, 2016 8:51 pm

sashpta hat geschrieben:Und wie schreib ich dann was rein?

INSERT INTO eintrag geht ja nicht
Warum nicht?
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

Antworten