php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-01-2011, 17:25
Baracuda-man
 Registrierter Benutzer
Links : Onlinestatus : Baracuda-man ist offline
Registriert seit: Jan 2011
Beiträge: 21
Baracuda-man befindet sich auf einem aufstrebenden Ast
Unhappy MySQL Datenbank insert into geht nicht (mehr)

Hallo php Resource Leute,

ich habe nen großes Problem. Also fange ich mal ganz vorne an. Ich habe eine Tabelle mit Kunden. Diese besteht aus ziemlich vielen Feldern. u.a. Text, timestamp, id (auto_increment), vorname, nachname usw....

Beim updaten der Kunden geht alles Problemlos. update XXX set XXX where kndnummer XXX

Komischerweise kann ich seit neustem nichts mehr in meine Tabelle eintragen. In der MySQL Tabelle habe ich lediglich ein varchar (25) Feld hinzugefügt was aber gar nicht in dem insert into angesprochen wird...

Hier mal der (abgekürzte, habe noch überprüfungen ob was eingetragen ist usw.) Quellcode:

Code:
else{
 $kndnummer = $_POST['kndnummer'];
 $paket = $_POST['paket'];
 $anrede = $_POST['anrede'];
 $vorname = $_POST['vorname'];
 $nachname = $_POST['nachname'];
$eintragung = "INSERT INTO kunden(kndnummer,paket,anrede,vorname,nachname) 
VALUES('$kndnummer','$paket','$anrede','$vorname','$nachname')";
 
 if(mysql_query($eintragung))
{echo '<p align="center">Kundendaten erfolgreich eingetragen.<br /><br /><a href="kundenuebersicht.php';
 echo '">Zurück</a></p>';
 }
 
else
 
{
 echo '<p align="center">
 Beim eintragen des Kunden trat leider ein Fehler auf.<br /><br /><a
 href="kundenuebersicht.php">Zurück</a></p>';
 }
 
 }
Mit Zitat antworten
  #2 (permalink)  
Alt 19-01-2011, 17:27
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

das passiert typischerweise dann, wenn man der neuen Spalte keinen Standardwert verpasst, sie aber gleichzeitig als NOT NULL definiert. Würdest du dir die Fehlermeldungen der DB ansehen, wüsstest du das aber bereits.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 19-01-2011, 17:30
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Hier fehlt übrigens das sehr wichtige Escaping der Daten. Hat wohl jemand vergessen, darf aber nicht passieren.

PHP: SQL Injection - Manual
Mit Zitat antworten
  #4 (permalink)  
Alt 19-01-2011, 17:31
Baracuda-man
 Registrierter Benutzer
Links : Onlinestatus : Baracuda-man ist offline
Registriert seit: Jan 2011
Beiträge: 21
Baracuda-man befindet sich auf einem aufstrebenden Ast
Standard

Die Tabelle hat nur Felder mit dem Typ NULL und nirgends Standardwerte gesetzt...
Muss ich jetzt für jedes Feld einen Standardwert setzten? Die Felder sollen ja leer sein wenn ich nicht übergeben. Wenn ich einen neuen Kunden anlege und keine Handynummer habe bleibt das Feld mobil ja selbstverständlich leer...

Wie löse ich das ganze jetzt am besten...

Achja Danke für die schnelle Antwort
Mit Zitat antworten
  #5 (permalink)  
Alt 19-01-2011, 17:36
Baracuda-man
 Registrierter Benutzer
Links : Onlinestatus : Baracuda-man ist offline
Registriert seit: Jan 2011
Beiträge: 21
Baracuda-man befindet sich auf einem aufstrebenden Ast
Standard

Ja wegen dem escaping... das wäre zwar sinnvoll habe ich aber noch nicht eingebaut da sich das ganze in einem geschütztem Loginbereich befindet. Auf den habe derzeit nur ich Zugriff
Mit Zitat antworten
  #6 (permalink)  
Alt 19-01-2011, 17:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Baracuda-man Beitrag anzeigen
Ja wegen dem escaping... das wäre zwar sinnvoll habe ich aber noch nicht eingebaut da sich das ganze in einem geschütztem Loginbereich befindet. Auf den habe derzeit nur ich Zugriff
Der Schutz vor SQL-Injections ist nur ein Aspekt. Das Escaping garantiert dir aber auch die fehlerlose Verarbeitung von diversen Sonderzeichen. Hast du zB. ein Hochkomma in einem Wert (zB: D'Agostino als Nachname) zerhaust du dir deine Datenbankabfrage und verursachst einen Fehler.
Mit Zitat antworten
  #7 (permalink)  
Alt 19-01-2011, 17:59
Baracuda-man
 Registrierter Benutzer
Links : Onlinestatus : Baracuda-man ist offline
Registriert seit: Jan 2011
Beiträge: 21
Baracuda-man befindet sich auf einem aufstrebenden Ast
Standard

So ich bins nochmal...

habe gerade mal zum Spaß versucht manuell einen Datensatz in die MYSQL Tabelle einzufügen..

Dabei hat er mir ein Error gebracht das die "id" (auto_increment) 127 schon vergeben ist. Diese ist in der Tat schon vergeben. Danach habe ich versucht eine manuelle ID anzugeben. Dabei wollter er wieder nichts eintragen wegen der ID 127.

Habe jetzt den Eintrag mit der ID 127 manuell verändert und ihm die ID 100 gegeben (100 war ein Kunde den ich gelöscht hatte)

Aber normal hätte sowas doch nicht passieren dürfen...

Jetzt geht zumindest wieder das eintragen

-----UPDATE-----

Egal welche ID ich ändere sobald ich einen neuen Eintrage bekommt dieser die ID 127...
Versuche ich dann einen neuen Eintrag zu erstellen will MYSQL ihm wider die ID 127 geben!!!!!!!!
ALTER LEUTE WAS GEHT DA AB...

Geändert von Baracuda-man (19-01-2011 um 18:02 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 19-01-2011, 18:04
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Ist die Spalte vielleicht ein SIGNED TINYINT? Hier kann der Wert nicht größer als 127 sein.
Mit Zitat antworten
  #9 (permalink)  
Alt 19-01-2011, 18:11
Baracuda-man
 Registrierter Benutzer
Links : Onlinestatus : Baracuda-man ist offline
Registriert seit: Jan 2011
Beiträge: 21
Baracuda-man befindet sich auf einem aufstrebenden Ast
Smile

Natürlich...

Das Feld ID ist nen TyniInt Feld (gewesen) und deswegen ging auch mein insert Into nicht mehr... Habe jetzt alle Änderungen Rückgängig gemacht und die Original Insert Into Funktion wieder eingebaut...

Und ES FUNKTIONIERT WIEDER

Danke dir, auf sowas blödes hätte ich auch kommen können...

Habe jetzt das Feld auf Int (4) gesetzt 9999 Kunden werde ich wohl nicht erreichen :-D

Oder sollte ich noch was ändern?

Ansonsten DANKE AN EUCH ALLE ! ! !


-------------------Kann geschlosssen werden-------------------------

Geändert von Baracuda-man (19-01-2011 um 18:15 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 19-01-2011, 18:16
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

INT(4) bedeutet nicht, dass die Zahl auf 4 Stellen limitiert ist. Die Zahl in INT() ist in den meisten Fällen sogar bedeutungslos.

Kennst du übrigens den Satz "640K ought to be enough for anybody"?
Mit Zitat antworten
  #11 (permalink)  
Alt 19-01-2011, 18:22
Baracuda-man
 Registrierter Benutzer
Links : Onlinestatus : Baracuda-man ist offline
Registriert seit: Jan 2011
Beiträge: 21
Baracuda-man befindet sich auf einem aufstrebenden Ast
Standard

Nein den Spruch kannte ich noch nicht,

was ist denn sonst mit der Zahl gemeint... Naja ich werds auch so herrausfinden können. Aber auf das Problem mit TinyInt hätte ich selbst drauf kommen können... Fragt sich nur wie lange das gedauert hätte :-D
Mit Zitat antworten
  #12 (permalink)  
Alt 20-01-2011, 14:58
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

das ist die Anzahl Bytes für die Spalte - in dem Fall des Integer bedeuten 4 Byte

Mit Vorzeichen von -2.14 Mrd bis +2.14 Mrd (-2^31 bis 2^31-1
Ohne Vorzeichen von 0 bis 4,29 Mrd ( 0 bis 2^32-1)

und demzufolge genug Platz für alle Kunden, die dir in den nächsten 3000 Jahren begegnen werden ^^

Und der Spruch mit den 640K(Bytes) stammt glaub ich vom IBM-Vorstand, als Kritiker anmerkten, das Speicherkonzept des IBM-PC (1980) sei ungenügend -

man sollte allerdings wissen, dass die ersten Serien des IBM-PC noch mit 256 KByte Speicher kamen - und die Leute durchaus mit den damaligen Anwendungen (mehr oder weniger) komfortabel arbeiten konnten ... Aber damals wurden Programme auch noch in erster Linie auf geringen Speicherbedarf optimiert.

Ich finde allerdings den Spruch des DEC-Chefs etwa 24 Jahre zuvor viel besser: "ich schätze den WELTWEITEN Bedarf an Computern auf ca DREI" (wohlgemerkt nicht 300 oder 3000 .. 3 - aber der dachte da an Ungetüme ála Enigma, der soviel Strom verbrauchte, wie eine 50000-Einwohner-Stadt)
__________________

Wer LESEN kann, ist klar im Vorteil!
Mit Zitat antworten
  #13 (permalink)  
Alt 20-01-2011, 15:02
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
das ist die Anzahl Bytes für die Spalte - in dem Fall des Integer bedeuten 4 Byte
Nein, ist sie nicht.

Wenn du ZEROFILL verwendest, ist das die Anzahl der Stellen, die mit 0 aufgefüllt werden.

Angenommen du hast INT(4), dann wird aus einer 1 0001. Bei INT(5) 00001, INT(6) 000001, usw.

Ein INT hat _immer_ 4 Byte, egal welche Zahl du da reinschreibst.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL mit Plesk geht (anscheinend von XAMPP) nicht mehr blade205 SQL / Datenbanken 1 02-12-2009 09:12
insert geht nicht schnalbi SQL / Datenbanken 1 31-07-2006 13:16
Nach Providerwechsel: mysql-query mit klasse geht nicht mehr Asito PHP Developer Forum 3 13-03-2006 20:15
insert. Php geht nicht Bup PHP Developer Forum 20 27-12-2004 22:26
Mysql Problem - insert geht net Deathfragger PHP Developer Forum 9 19-04-2003 20:23

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:32 Uhr.