Seite 2 von 3

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 4:20 pm
von sashpta
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 ?

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 4:47 pm
von Xin
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. :)

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 5:02 pm
von sashpta
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

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 5:59 pm
von mfro
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.

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 6:17 pm
von sashpta
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.

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 6:26 pm
von Xin
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.

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 6:37 pm
von sashpta
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

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 7:43 pm
von mfro
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.

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 7:48 pm
von sashpta
Und wie schreib ich dann was rein?

INSERT INTO eintrag geht ja nicht

Re: Via php/html etwas in die datenbank schreiben

Verfasst: Mi Jun 22, 2016 8:51 pm
von mfro
sashpta hat geschrieben:Und wie schreib ich dann was rein?

INSERT INTO eintrag geht ja nicht
Warum nicht?