PHP und MySQL - Probleme mit Datenbank

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

Tritium

Betreff: PHP und MySQL - Probleme mit Datenbank

BeitragSo, Mai 25, 2008 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Zunächst mal war ich mir nicht sicher, ob das hierhin gehört, also bitte verschieben, wenns nicht passt!

Nun zu meinem Problem: Ich bin im Moment dabei, mir ne Website aufzubauen (http://tritium.zxq.net). Klappt auch alles soweit, nur mit der Datenbank hab ich ein Problem. Ursprünglich war es folgendermaßen gedacht: Unter Kontakt kann man das Formular ausfüllen, worauf ein PHP-Script ausgeführt wird, welches das Formular an meine Mailadresse schickt. Da der Server, auf dem die Seite liegt, aber keine Mails erlaubt, hab ich mir folgendes überlegt: Ich lasse die Werte in eine MySQL-Datenbank schreiben.

Also hab ich mir eine Datenbank erstellt, dadrin wiederum eine Tabelle mit dem Namen feedback (klein geschrieben). Ich hab auch bereits über PHPminiAdmin Werte in die Tabelle eingetragen, das funktioniert. Die wichtigen Zeilen meines Scripts sehen so aus:

Code: [AUSKLAPPEN]
$query = 'insert into feedback(betreff,msg,email) values(\"'.$vbetreff.'\",\"'.$vnachricht.'\",\"'.$vemail'\")';
mysql_query($query);


Davor wurden noch die Variablen initialisiert und eine Verbindung aufgebaut. Das funktioniert alles, die Verbindung wird aufgebaut und die Variablen haben an dieser Stelle auch den richtigen Wert, hab ich bereits ausprobiert. Allerdings bekomm ich folgende Fehlermeldung:

Code: [AUSKLAPPEN]
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /www/zxq.net/t/r/i/tritium/htdocs/data/response.php on line 25


Zeile 25 ist die mit $query = ...

Was mach ich falsch?

Geeecko

BeitragSo, Mai 25, 2008 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Musst du nicht:
Code: [AUSKLAPPEN]
values(\"'.$vbetreff.'\",\"'.$vnachricht.'\",\"'.$vemail'\")';

->
Code: [AUSKLAPPEN]
values(\"'".$vbetreff."'\",\"'".$vnachricht."'\",\"'".$vemail."'\")';
(Der Punkt fehlte glaub ich)

EDIT:
Habe falsch gedacht... so wie dus gemacht hast gehts, aber trotzdem fehlt der Punkt bei vemail.^^
 

Tritium

BeitragSo, Mai 25, 2008 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
So, der Punkt fehlt jetzt nicht mehr Wink

Ich bekomm jetzt zwar keinen Fehler mehr, trotzdem wird in die Tabelle nichts eingetragen. Der Benutzer, über den eingetragen wird (bzw. werden soll... Rolling Eyes ) hat die Rechte für Insert, Update und Alter, das müsste doch eigentlich reichen, oder nicht?

Geeecko

BeitragSo, Mai 25, 2008 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Führ den Befehl doch mal in MyPhpAdmin da aus. Einfach oben auf SQL klicken,
oder war das das, was du schon probiert hast?

Smily

BeitragSo, Mai 25, 2008 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Lass dir mal den Mysql-query ausgeben.

die Doppel-Hochkomma musst du nicht escapen, da dein Query ja in einfachen hochkommas steht.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

ProfJake

ehemals "DTC" / "Fabian Niemann"

BeitragSo, Mai 25, 2008 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier's mal damit:

Code: [AUSKLAPPEN]

$query = 'INSERT INTO feedback(betreff,msg,email) VALUES(\''.$vbetreff.'\',\''.$vnachricht.'\',\''.$vemail'\');';


Aber denk daran die Variablen mit mysql_real_escape_string() zu sichern.
 

Tritium

BeitragSo, Mai 25, 2008 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Meister_Dieb hat Folgendes geschrieben:
Führ den Befehl doch mal in MyPhpAdmin da aus. Einfach oben auf SQL klicken,
oder war das das, was du schon probiert hast?


Da gehts, wenn ich die Variablen durch Strings ersetze. Die Variablen in dem Script haben aber trotzdem die richtigen Werte.

pupil hat Folgendes geschrieben:
Aber denk daran die Variablen mit mysql_real_escape_string() zu sichern.


Sry, aber was heißt das? Ich programmiere erst seit gestern mit PHP Wink

D2006

Administrator

BeitragSo, Mai 25, 2008 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
mysql_query( '...' );
echo mysql_error();
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Smily

BeitragSo, Mai 25, 2008 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Tritium hat Folgendes geschrieben:
Meister_Dieb hat Folgendes geschrieben:
Führ den Befehl doch mal in MyPhpAdmin da aus. Einfach oben auf SQL klicken,
oder war das das, was du schon probiert hast?


Da gehts, wenn ich die Variablen durch Strings ersetze. Die Variablen in dem Script haben aber trotzdem die richtigen Werte.

pupil hat Folgendes geschrieben:
Aber denk daran die Variablen mit mysql_real_escape_string() zu sichern.


Sry, aber was heißt das? Ich programmiere erst seit gestern mit PHP Wink


wie schon gesagt, lass dir den query mal mit echo ausgeben.

MySQL-Real-Escape-String ist dafür da, um Injektionslücken vorzubeugen.
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

Tritium

BeitragSo, Mai 25, 2008 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily0412 hat Folgendes geschrieben:
die Doppel-Hochkomma musst du nicht escapen, da dein Query ja in einfachen hochkommas steht.


Komisch, jetzt funktionierts ohne Probleme und Fehlermeldungen Very Happy

Dankeschön an alle!

ProfJake

ehemals "DTC" / "Fabian Niemann"

BeitragSo, Mai 25, 2008 19:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht so voreilig!
Erstmal klickst du HIER und dann baust du das ein:

Code: [AUSKLAPPEN]

$query = 'INSERT INTO feedback(betreff,msg,email) VALUES(\''.mysql_real_escape_string($vbetreff).'\',\''.mysql_real_escape_string($vnachricht).'\',\''.mysql_real_escape_string($vemail).'\');';


mysql_real_escape_string()

Sonst passieren irgendwann so merkwürdige Dinge wie gelöschte User, Tabellen etc.
 

Tritium

BeitragSo, Mai 25, 2008 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab ich gemacht, danke nochmal!

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group