You have an error in your SQL syntax; check the manual that corresponds....

Bobo2040

Mitglied
Hi
Also ichz arbeite grad an ner kleinen Community und habe Registrieren und Login und Profil bearbeiten und Löschen und sowas alles schon gemacht... so nun wollte ich mich an nem kleinen PM System versuchen aber ich finde den Fehler einfach nicht es liegt glaube ich an den Anführungszeichen/Hochkommas aber mit wechseln hats leider nicht geklappt...hier mal mein Code
Send.php
PHP:
<?php
include('config.php');

	$from = $_POST['from'];
	$to = $_POST['to'];
	$pm = $_POST['pm'];

	$query = "INSERT INTO nachrichten('von_id','zu_id','nachricht') VALUES('$from','$to','$pm')";
	$res = mysql_query($query);
	echo mysql_error();
?>
Ist auch eig. nur nen mini Script...-.-'
index.php
PHP:
<?php
include('config.php');
	$username = 'user123';
	
	$query = "SELECT * FROM nachrichten WHERE `zu_id` = '".$username."' ";
	$res = mysql_query($query);

	while($row = mysql_fetch_object($res)) {
		echo "Von :";
		echo $row->from;
		echo "<br/>";
		echo "Nachricht:";
		echo $row->pm;
		echo "<br/>";
	}
	echo mysql_error();
	echo "<form action=\"send.php\" method=\"post\">";
	echo "<input type=\"text\" name=\"pm\">";
	echo "<input type=\"hidden\" value=\"test\" name=\"from\">";
	echo "<input type=\"hidden\" value=\"user123\" name=\"to\">";
	echo "<input type=\"submit\">";
	echo "</from>";
?>
So und hier dann noch Config.php

PHP:
<?php
mysql_connect("localhost", "root" , "");
mysql_select_db("message");
?>
So und der Mysql Error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''von_id','zu_id','nachricht') VALUES('','','')' at line 1

So er sagt da ist was mit den Hochkommas in Zeile 1 falsch aber das macht wenig sinn... ? weil zeile 1 ist immer <?php
und dann habe ich gedacht vllt ist was in der Config.php falsch... aber da hat sich nix geändert wenn ich die "Gänsefüßchen" geändert habe
Kann mir pls einer Helfen ?
 
Moin,

mit "at line 1" ist gemeint, dass in der SQL Syntax in der Zeile 1 ein Fehler besteht, nicht in der PHP Datei.

Zunächst würde ich prüfen ob passende POST-Werte existieren:
PHP:
print_r($_POST);

Danach würde ich unbedingt die POST mit mysql_real_escape_string verarbeiten:

$from = mysql_real_escape_string($_POST['from']);
$to = mysql_real_escape_string($_POST['to']);
$pm = mysql_real_escape_string($_POST['pm']);

Somit wird SQL Injections verhindert und ich vermute mal das da dein Problem steckt.

Zu allerletzt würde ich die den SQL String mir, vor dem Ausführen, ausgeben lassen:
PHP:
print_r($query);

Ja das sind die Tips die ich dir so geben kann. Augenscheinlich schaut aber der SQL Syntax dennoch in Ordnung aus.

Gruß
 
Okay naja das mit SQL-Injection Schutz kenne ich schon aber trozdem danke... naja ich wollte eig. erstmal nur die Basic Funktion machen :D und die Post werte existieren wenn Man bei Home.php auf Senden Drückt, werden die Daten ja übergeben ... und auch wenn ich die Variablen durch richtige Daten ersetze dann gibts immernoch den selben Fehler... -.-'
Okay und wenn ich das mit
print_r($query) mache dann gibt er mir das aus:

INSERT INTO nachrichten('von_id','zu_id','nachricht') VALUES('test','user123','123')

Also eig. alles richtig aber er wills irgendwie nicht eintragen -.-'
 
Okay ich habe es hinbekommen war echt ein Schusselfehler -.-'
hier falls jemand den Selben Fehlerr hat....
PHP:
$query = "INSERT INTO nachrichten(von_id,zu_id,nachricht) VALUES('user123','empfaenger','Hallo das ist ein Test!')";
So dort müssen nach nachrichten( die Hochkommas entfernt werden also aus
PHP:
... nachrichten('von_id','zu_id'...)
Wird dann 
... nachrichten(von_id,zu_id...)
So das wars auch schon aber trozdem danke :D
 
Hallo,


was mich nun ein wenig stuzig macht ist, das bei die von_id und zu_id bei diesem INSERT keine Nummern sind.

Bei einer relationalen Datenbank werden die Primary-Keys als Foreign-Key in einer seperaten Tabelle eingeführt, somit werden Beziehungen zu den Datensätzen von einer Entity (Tabelle) zu einem Datensatz einer anderen Entity (Tabelle) hergestellt. Mir sieht es danach aus, als hättest du statt die user_id, den usernamen genommen. Augenscheinlich! Kenne deine Struktur in der Datenbank nicht, deshalb würde ich gerne darum nochmal bitten.

So würde ich es machen:

Usertabelle:

user_id,user_name, ...
1, Dennis, ...
2, Volker, ...
3, Matthias

So deine Nachrichten-Tabelle:

nachricht_id, von_id, zu_id, nachricht, ...
1, 1, 3, "hallo Matthias"
 
Okay ich habe es hinbekommen war echt ein Schusselfehler -.-'
hier falls jemand den Selben Fehlerr hat....
PHP:
$query = "INSERT INTO nachrichten(von_id,zu_id,nachricht) VALUES('user123','empfaenger','Hallo das ist ein Test!')";
So dort müssen nach nachrichten( die Hochkommas entfernt werden also aus
PHP:
... nachrichten('von_id','zu_id'...)
Wird dann 
... nachrichten(von_id,zu_id...)
So das wars auch schon aber trozdem danke :D


Ah, das habe ich auch nicht gesehen ^^.

Manchmal sind es die kleinen Dingen die einem das Leben schwer machen ^^
 
Zurück