Menu schließen

Datenbanken

Frage: Datenbanken
(39 Antworten)


Autor
Beiträge 0
14
Bei einer Relation zwischen Tabelle Personen/Kunden und PLZ/Postleitzahl, wird die Postleitzahl nicht als Postleitzahl in die Tabelle Personen/Kunden angezeigt, statt dessen wird für jede/n Person/Kunden der Wert 0 reingeschrieben.

Ich habe zwei Insert Befehle separat ausgeführt.

Einmal um die Postleitzahl in Tabelle Postleitzahl zu schreiben und einmal um den Vornamen, Nachname ..... in die Tabelle Kunden zu schreiben.

Ich glaube das Problem liegt dort bei den Inserts, dass er in der Tabelle Kunden in der Spalte PLZ eine null anzeigt/reinschreibt. Nur komischerweise wird die richtige PLZ in der Tabelle PLZ richtig angezeigt nur in der Tabelle Kunden macht der das nicht.

Zur info: die Tabellen sind bereits miteinander Verbunden
Frage von Blinki_20 (ehem. Mitglied) | am 22.12.2011 - 16:52


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 18:52
hat das evt.
was mit dem datentyp des attributs zu tun oder so ?


Autor
Beiträge 4080
17
Antwort von S_A_S | 22.12.2011 - 18:53
Wenn du die Postleitzahl gerade erst eingibst, dann kannst du die schon in das INSERT-Statement für die Tabelle person mitreinnehmen!
Du hast aber wirklich das Problem, wenn du das jedemsl noch nach PLZ schreibst, dass du irgendwann Duplikate in der Tabelle plz hast!


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 18:54
das ist nicht redundant :) du kannst ja dieses häckchen bei unique machen und puff haste es nur einmal da


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 18:56
oder eine abfrage mit num_rows und dann habe ich das auch also ist nicht wirklich schwer das zu lösen


Autor
Beiträge 4080
17
Antwort von S_A_S | 22.12.2011 - 18:59
Zitat:
das ist nicht redundant :) du kannst ja dieses häckchen bei unique machen und puff haste es nur einmal da

FALSCH!
Ganz ganz falsch!
Das heißt nur, dass du forderst, dass das nur einmal da sein darf - d.h. wenn du das noch mal versuchst einzufügen, wird dir das Datenbanksystem das mit einem Fehler quittieren und es nicht einfügen. Was dann aber nach dem Fehlerfall mit deinem Programm passiert darum musst du dich kümmern, wenn du da keine Fehlerbehandlung ausbaust, dann ist bei PHP nämlich Sense und die gesamte Ausführung wird gestoppt ab der Zeile, wo es den Fehler gibt!


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 19:01
ja ok dann habe ich immer noch mysql_num_rows ^^
damit kann ich dann abfragen und nen false zurückgeben.
wie gesagt nicht wirklich schwer


Autor
Beiträge 4080
17
Antwort von S_A_S | 22.12.2011 - 19:04
Mir brauchst du nicht zu erzählen wie man Datenbanken programmiert. Ich kann das.

Ich verstehe wirklich gerade nicht was du genau konzeptionell vor hast und wo dein eigentliches Probelm ist. Du willst in beide Tabellen die PLZ Daten drin haben fügst sie aber jedes Mal nur in die PLZ Tabelle ein, dann kannst du das doch einfach auch noch in die Abfrage einfügen, die die Person einfügt.
Ich weiß wirklich nicht was du da für ein Problem gerade hast, abegesehen von deinem erheblichsten Sicherheitsproblem.


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 19:10
ich habe gerade ein Projekt am laufen und das einzigste Problem ist komischerweise halt das ^^ aber es gibt immer sachen naja ich habs nochma überarbeitet so wie du es gesagt hast.

die PLZ in den Insert rein wo ich die Tabelle Person Tabelle habe. Nun sieht das wie folgt aus mysql_query("INSERT INTO person(Name, Vorname, Geburtsdatum, PLZ_ID, Email, Strasse, Username, Passwort)values(`$_POST[nname]`, `$_POST[vname]`, `$_POST[bdate]`, `$_POST[plz]`,`$_POST[email]`, `$_POST[str]`, `$_POST[uname]`, md5(`$_POST[pwd]`))");
mysql_query("INSERT INTO plz(PLZ_ID,Ort) Values(`$_POST[plz]`,`$_POST[ort]`)");
mysql_query("Select PLZ_ID from PLZ Where Ort = `$_POST[ort]`");

Kann ich das zweite Statement raus nehmen oder ... ?


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 19:27
ok es hat endlich funktioniert und ja die sicherheit klär ich übrigens mit ajax schon im vor feld ab also bevor ich die daten senden bzw senden kann weil wenn nicht alle inputs ausgefüllt sind ist der disabled.

Danke für deine Hilfe :)


Autor
Beiträge 4080
17
Antwort von S_A_S | 22.12.2011 - 19:32
Zitat:
ok es hat endlich funktioniert und ja die sicherheit klär ich übrigens mit ajax schon im vor feld ab also bevor ich die daten senden bzw senden kann weil wenn nicht alle inputs ausgefüllt sind ist der disabled.


Tut es nicht. Das ist Humbug darauf darfst du NICHT VERTRAUEN ODER BAUEN. Davon abgesehen kann ich dir trotzdem eine SQL Injection reinschleußen selbst, wenn ich alles ausfülle!


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 19:41
klar asynchron ist es natürlich risikohafter also man es synchron macht. Das habe ich jetzt nicht bezweifelt, dennoch sieht es erstens besser aus und zweitens ist es ans WEB 2.0 angeknüpft.

Man kann immer irgendwie auf die Daten anderer gelangen, man muss nur wissen wie man sich schützt z.b mit kleinen regex abfragen einem https server und dann noch eine oracle datenbank pseudo ids
und und und ... dir muss ich das ehh nicht sagen da du diese Sachen bereits kennst.


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 20:05
ok mit sqlerror würdest du dann glaub ich nicht mehr so leichtes spiel haben für deinen injection Versuch zu mindest.


Autor
Beiträge 4080
17
Antwort von S_A_S | 22.12.2011 - 20:13
Was hat das eine mit dem Anderen zu tun?
Ich glaube dir ist nicht wirklich klar, was ich hier meine.


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 20:28
sql injection du gibst einen sql statement in der url ein und mit sqlerror und mysql_error kann ich eine tabelle erstellen mit dem ich angeben wann du aus der liste gesperrt wirst und nach wie vielen versuchen du gesperrt wirst. So kann man das Injection Problem lösen like this :
$sql = "DELETE FROM system_attack_control WHERE
DATE_SUB(NOW(), INTERVAL 30 MINUTE) > Datum";
mysql_query($sql) OR die(sqlerror(mysql_error()));


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 20:29
weil du die ganze zeit von injection gesprochen hast deswegen ^^


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 20:31
klar weiss ich was du meinst und das habe ich auch schon in vielen postings auch geschrieben, es geht um die allgemeine sicherheit ob injection oder whatever


Autor
Beiträge 4080
17
Antwort von S_A_S | 22.12.2011 - 20:39
Zitat:
So kann man das Injection Problem lösen like this :
$sql = "DELETE FROM system_attack_control WHERE
DATE_SUB(NOW(), INTERVAL 30 MINUTE) > Datum";
mysql_query($sql) OR die(sqlerror(mysql_error()));


Wo löst dir das dein SQL Injection Problem?


Autor
Beiträge 0
14
Antwort von Blinki_20 (ehem. Mitglied) | 22.12.2011 - 21:19
das ist jetzt nur ein example


Autor
Beiträge 4080
17
Antwort von S_A_S | 22.12.2011 - 21:29
Nö das hat mit der Thematik einfach nur nichts zu tun.

Verstoß melden
Hast Du eine eigene Frage an unsere Informatik-Experten?

5 ähnliche Fragen im Forum: 1 passende Dokumente zum Thema:
> Du befindest dich hier: Support-Forum - Informatik
ÄHNLICHE FRAGEN:
  • Lebenszyklus von Datenbanken
    Was ist der Lebenszyklus von Datenbanken?
  • Datenbank
    Hallo, ich hab das Thema: Integrität in relationalen Datenbanken. Ich kenn mich leider null mit pc`s aus :S Die Stichwörter ..
  • Abitur - Datenbanken und Datenschutz
    Hey, mich würde es mal interessieren, nach welchen Kriterien man bewertet ob eine aufgebaute Datenbank so sinnvoll ist oder ..
  • SQL-Abfrage bei Datenbank
    In Informatik nehmen wir im Moment SQL Abfrage bei Datenbanken durch. Es handelt sich um phpMyAdmin. Morgen kommt der Test und ..
  • Datenbanken
    Nabend! Ich komme irgendwie in Informatik weiter -.- Wisst ihr vllt. was falsch oder richtig ist, hab keine ahnung davon:S..
  • mehr ...
BELIEBTE DOWNLOADS:
  • Datenbank und ER-Modell
    Augabenstellung: 1.Was verstehen sie unter dem Datenbank Lebenszyklus? 2.Welche Phasen werden beim Entwurf von Datenbanken ..
  • mehr ...