Community
Szene & News
Locations
Impressum
|
Forum / Bits und Bytes
MySQL+PHP Unknown column error

Der666Diablo
Champion
(offline)
Dabei seit 04.2006
23736
Beiträge
|
Geschrieben am: 06.09.2012 um 17:10 Uhr
Zuletzt editiert am: 06.09.2012 um 18:20 Uhr
|
|
Moin werte TU-programmiergemeinde,
ich wollte gerade die Maße von Bauteilen per PHP in eine MySQL tabelle schreiben, dabei schreibt es mir die maße nicht korrekt in die datenbank, füllle ich das entspr. form mit "100*100*1" berechnet es mir den endwert, bei "100x100x11" scheint es so, als würde der Zielfeldname überschrieben:
Error: Unknown column '100x100x11' in 'field list'
Definiert ist das ganze als varchar, sollte also funktionieren, manuell über phpmyadmin funktioniert das auch.
Daher: Hat jemand einen Tipp?
Danke schonmal!
Bei Geld, Sex und Kunst gibt es keinen abnehmenden Grenznutzen. http://shortlinks.de/oee9
|
|
scw - 41
Experte
(offline)
Dabei seit 09.2002
1836
Beiträge
|
Geschrieben am: 06.09.2012 um 18:41 Uhr
Zuletzt editiert am: 06.09.2012 um 18:41 Uhr
|
|
Zeig mal deinen Code.
Aber du versuchst irgend etwas in die Spalte 100x100x11 zu schreiben 
ein DDL deiner Tabelle wäre vllt auch nicht schlecht .-D
|
|
Der666Diablo
Champion
(offline)
Dabei seit 04.2006
23736
Beiträge
|
Geschrieben am: 06.09.2012 um 19:00 Uhr
Zuletzt editiert am: 06.09.2012 um 19:02 Uhr
|
|
Zitat von scw: Zeig mal deinen Code.
Aber du versuchst irgend etwas in die Spalte 100x100x11 zu schreiben 
ein DDL deiner Tabelle wäre vllt auch nicht schlecht .-D
Jup, das ist mir bewusst, ich weiss nur nicht, was das Problem forciert, da es alles andere Problemlos annimmt.
if (!mysql_query("INSERT INTO eingabe(MID, Abmessung, Menge) values ($_POST['MID'], $_POST['Abmessung'], $_POST['Menge'])",$connection))
{
die('Error: ' . mysql_error());
}
Das relevanteste da sollte wohl die Abmessungspalte sein:
CREATE TABLE IF NOT EXISTS `eingabe` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`MID` int(10) unsigned NOT NULL,
`Abmessung` varchar(45) NOT NULL,
`Menge` int(11) unsigned NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `ID_UNIQUE` (`ID`),
KEY `fk_Eintrag_M1_idx` (`MID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
Edit: Sprich, wenn ich 1*1*1 eingebe berechnet er mir eben 1 und schiebt das ohne nachfrage in die DB, wenn ich 100x100x11 eingebe will er das ganze in Tabelle 100x[...] schieben.
Bei Geld, Sex und Kunst gibt es keinen abnehmenden Grenznutzen. http://shortlinks.de/oee9
|
|
scw - 41
Experte
(offline)
Dabei seit 09.2002
1836
Beiträge
|
Geschrieben am: 06.09.2012 um 19:03 Uhr
Zuletzt editiert am: 06.09.2012 um 19:05 Uhr
|
|
Strings solltest du mit einzelnen Anführungszeichen einfügen. Außerdem solltest du prepared Queries nehmen. Mit deiner Lösung kann man ganz schnell eine SQL Injection machen und deine komplette Datenbank zerstören 
EDIT: Das ist der sichere Weg, Dinge in eine DB einzufügen http://php.net/manual/en/pdo.prepared-statements.php
|
|
Der666Diablo
Champion
(offline)
Dabei seit 04.2006
23736
Beiträge
|
Geschrieben am: 06.09.2012 um 19:08 Uhr
|
|
Zitat von scw: Strings solltest du mit einzelnen Anführungszeichen einfügen. Außerdem solltest du prepared Queries nehmen. Mit deiner Lösung kann man ganz schnell eine SQL Injection machen und deine komplette Datenbank zerstören 
Jep, ist mir klar, nur denke ich mir, wenn es so nicht funktioniert, wie soll ich dann den Fehler finden, dass das ganze noch überprüft wird ist klar, über dem Codesegment steht im Kommentar "fett" überprüfung einbauen. 
aber was meinst du mit prepared queries? und Strings hab ich hier an sich ja keine?
Bei Geld, Sex und Kunst gibt es keinen abnehmenden Grenznutzen. http://shortlinks.de/oee9
|
|
scw - 41
Experte
(offline)
Dabei seit 09.2002
1836
Beiträge
|
Geschrieben am: 06.09.2012 um 19:11 Uhr
|
|
Zitat von Der666Diablo: Zitat von scw: Strings solltest du mit einzelnen Anführungszeichen einfügen. Außerdem solltest du prepared Queries nehmen. Mit deiner Lösung kann man ganz schnell eine SQL Injection machen und deine komplette Datenbank zerstören 
Jep, ist mir klar, nur denke ich mir, wenn es so nicht funktioniert, wie soll ich dann den Fehler finden, dass das ganze noch überprüft wird ist klar, über dem Codesegment steht im Kommentar "fett" überprüfung einbauen.
aber was meinst du mit prepared queries? und Strings hab ich hier an sich ja keine?
Ein String ist eine Folge an Zeichen. Also auch "100x100x10".
Versuch einfach mal solche Zeichenfolgen mit ' außendrum einzufügen. Dann geht auch 1*1*1
|
|
Der666Diablo
Champion
(offline)
Dabei seit 04.2006
23736
Beiträge
|
Geschrieben am: 06.09.2012 um 19:16 Uhr
|
|
Zitat von scw: Ein String ist eine Folge an Zeichen. Also auch "100x100x10".
Versuch einfach mal solche Zeichenfolgen mit ' außendrum einzufügen. Dann geht auch 1*1*1 
Sorry, lange Leitung, hab gedacht im Programmcode, im Formular hast du natürlich Recht, sprich eigtl. müsste ich das ganze nur escapen (was ja noch kommen soll) und ich hätte keine Probleme mehr?
Bzgl. der Prepared Statements: Aber auch diese Helfen mir doch nicht, wenn ich das ganze nicht phpseitig davor überprüfe, nicht?
Bei Geld, Sex und Kunst gibt es keinen abnehmenden Grenznutzen. http://shortlinks.de/oee9
|
|
scw - 41
Experte
(offline)
Dabei seit 09.2002
1836
Beiträge
|
Geschrieben am: 06.09.2012 um 19:23 Uhr
|
|
Zitat von Der666Diablo:
Bzgl. der Prepared Statements: Aber auch diese Helfen mir doch nicht, wenn ich das ganze nicht phpseitig davor überprüfe, nicht?
Doch. Bei Prepared Statements werden die Daten, die man reinsteckt immer automatisch escaped.
|
|
Forum / Bits und Bytes
|