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
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
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?