Du bist nicht eingeloggt.

Login

Pass

Registrieren

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.
  [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2025 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -