ubuntuusers.de

PHP/MySQL - INSERT INTO funktioniert nicht

Status: Gelöst | Ubuntu-Version: Xubuntu 11.04 (Natty Narwhal)
Antworten |

kram

Avatar von kram

Anmeldungsdatum:
7. Juni 2008

Beiträge: 15

Hallo liebe Community,

ich verzweifle an meinem recht simplen Code, mit dem ich es einfach nicht schaffe, Werte in eine MySQL Tabell zu schreiben. Der Zugriff auf die Datenbank funktioniert.

Die Tabellenconfiguration ist wie folgt:

Name: requests
Spalten:
from - int(11)
to - int(11)
email - varchar(30) - latin1_swedish_ci	
id - int(11)- autocrement

Hier mein Skript zum Schreiben von Werten in die Tabelle:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?
		include("mysql.inc");
		$email = $_GET['email'];
		$from = $_GET['from'];
		$to = $_GET['to'];

		echo "email: ".$email."<br>";
		echo "from: ".$from."<br>";
		echo "to: ".$to."<br>";
		$query = "INSERT INTO requests ('from', 'to', 'email', 'id') VALUES ('$from', '$to', '$email', NULL)";

		echo $query;
		mysql_query($query);
		mysql_close($dz);
?>

Folgendes wird ausgegeben (mit Beispielwerten) - die Übertragung der Werte an das Skript scheint also zu funktionieren, auch die Datentypen passen, aber in der Datenbank landet trotzdem nichts.

email: x.y@z.de
from: 1
to: 2
INSERT INTO requests ('from', 'to', 'email', 'id') VALUES ('2', '7', 'aa', NULL)

Findet ihr den Fehler?

Gruß, Mark

Kinch

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 1261

Ist eine ganze Weile her, das ich was mit SQL machen musste, aber müssen SQL-Statements nicht mit ';' abgeschlossen werden?

fckawe

Avatar von fckawe

Anmeldungsdatum:
23. April 2011

Beiträge: 509

Wohnort: Freiburg im Breisgau

Du darfst m.E. die Attributnamen nicht in Hochkommas stellen. Der SQL-String müsste also letztendlich so aussehen:

1
INSERT INTO requests (from, to, email, id) VALUES ('2', '7', 'aa', NULL)

Gruß, Gerald

DiBo33

Anmeldungsdatum:
16. Juni 2006

Beiträge: 1827

Solange du keine Fehlerbehandlung in deinem Script einbaust, kann dir MySQL auch gar nicht mitteilen was falsch ist.

http://de3.php.net/manual/de/function.mysql-error.php

Wobei from und to sehr ungünstige Feldnamen sind, da sie zu den reservierten Wörtern zählen.

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

Desweiteren solltest du dich mit dem Thema Kontextwechsel auseinander setzen.

http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel

sicco

Avatar von sicco

Anmeldungsdatum:
3. Oktober 2007

Beiträge: 26

versuch es mal so:

1
$query = "INSERT INTO `requests` (`from`, `to`, `email`', `id`) VALUES ('$from', '$to', '$email', '')";

kram

(Themenstarter)
Avatar von kram

Anmeldungsdatum:
7. Juni 2008

Beiträge: 15

Hey, danke für eure Hilfe!

Der entscheidende Tipp war, statt 'from' und 'to' andere Bezeichnungen zu verwenden 😉

Der Hinweis von fckawe ist auch richtig, allerdings haben sich die Anführungszeichen wohl beim herumprobieren eingeschlichen. Peinlich, peinlich...

Hier der Code, den ich letzten Endes verwendet habe:

1
$query = "INSERT INTO requests (von, zu, email, id) VALUES ('$von', '$zu', '$email', '')";

Gruß, Mark

PS: Ob man am NULL oder leere Anführungszeichen (im Feld 'id') verwendet ist egal 😉

Antworten |