SQL Syntax Error
Hi,
Wenn ich mein Formular im Browser Absende kommt immer folgender Fehler:
Ungültige Abfrage: 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 '' at line 1
Ich vermute mal dass ich etwas falsch gemacht habe bei dem SET Befehl.
Meine Problemdatei:
Mein Formular:
Meine config.php
Wäre nett wenn ihr mir sagen könntet ob das so richtig ist!
evt. Umformatieren
mfg Fleckmen
Wenn ich mein Formular im Browser Absende kommt immer folgender Fehler:
Ungültige Abfrage: 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 '' at line 1
Ich vermute mal dass ich etwas falsch gemacht habe bei dem SET Befehl.
Meine Problemdatei:
<?php
include 'config.php';
$sql = " INSERT INTO computer ";
$sql .= " SET ";
$sql .= " name ='". $_POST['name'] ."', ";
$sql .= " ip ='". $_POST['ip'] ."', ";
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}
?>
Mein Formular:
<form action="newid.php" Method="post" enctype="text/html">
<table align=center >
<tr>
<th colspan=2 >Daten des Rechners:</th>
</tr>
<tr>
<td>Name:</td>
<td><input type="text" name="name" size="40" maxlength="40" ></td>
</tr>
<tr>
<td>IP:</td>
<td><input type="text" name="ip" size="40" maxlength="40" ></td>
</tr>
<tr>
<td><input type="submit" value="Absenden"></td>
<td><a href="index.php" >zurück</a></td>
</tr>
</table>
</form>
Meine config.php
<?php
define ( 'MYSQL_HOST', 'localhost' );
define ( 'MYSQL_BENUTZER', '***' );
define ( 'MYSQL_KENNWORT', '***' );
define ( 'MYSQL_DATENBANK', 'datenbank' );
$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
if ( $db_link )
{
echo 'Verbindung erfolgreich';
}
else
{
die('keine Verbindung möglich: ' . mysql_error());
}
mysql_select_db("DATENBANK") or die
("Die Datenbank existiert nicht.");
?>
Wäre nett wenn ihr mir sagen könntet ob das so richtig ist!
evt. Umformatieren
mfg Fleckmen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 137541
Url: https://administrator.de/contentid/137541
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
10 Kommentare
Neuester Kommentar
Klar mache ich das... Auch ohne dein Formular zu kennen - ich bin nämlich nebenberuflich Hellseher...
Ebenfalls ist es überflüssig dein gesamten SQL-Statement (ggf. sogar noch Lesbar...) hier reinzustellen. Wir alle lieben das erraten von Problemen...
Sorry, aber wenn du nur sowenig Hilfe geben kannst/willst dann bleibt mir zu sagen: Ich habe zwar keine Lösung - aber ich bewundere DEIN Problem!
Ebenfalls ist es überflüssig dein gesamten SQL-Statement (ggf. sogar noch Lesbar...) hier reinzustellen. Wir alle lieben das erraten von Problemen...
Sorry, aber wenn du nur sowenig Hilfe geben kannst/willst dann bleibt mir zu sagen: Ich habe zwar keine Lösung - aber ich bewundere DEIN Problem!
Hallo Fleckmen,
was soll die Abfrage machen? Dein Konstrukt ist eine Mischung aus Syntax für UPDATE und Befehlt für INSERT INTO.
so befüllst du die Tabelle SET benutzt man beim Update Statement nicht beim Befüllen.
Beispiel für Update
Gruß
was soll die Abfrage machen? Dein Konstrukt ist eine Mischung aus Syntax für UPDATE und Befehlt für INSERT INTO.
Insert into computer (name, ip) Values (Test1, 192.168.0.1)
so befüllst du die Tabelle SET benutzt man beim Update Statement nicht beim Befüllen.
Beispiel für Update
UPDATE computer
SET
name = 'Test'
where name = 'IchBinNamenlos'
Moin Fleckmen,
Ja, aber dafür gibt es doch zwei mögliche Fälle:
a) ein INSERT - Datensatz ist komplett neu
b) ein UPDATE - Datensatz ist vorhanden und wird aktualisiert in einigen Feldern
Andernfalls ist es reine Glückssache, ob ein INSERT klappen kann.
P.S. Lass dich nicht abschrecken von den vielen pingeligen Rückfragen.
Sei froh, dass du früh auf die ganzen Stolpersteine aufmerksam gemacht wirst und nicht erst beim "go live" deiner Appz damit konfrontiert wirst
Grüße
Biber
Ja, aber dafür gibt es doch zwei mögliche Fälle:
a) ein INSERT - Datensatz ist komplett neu
b) ein UPDATE - Datensatz ist vorhanden und wird aktualisiert in einigen Feldern
Die Tabelle in der Datenbank besteht aus
id NAME IP
Im Kontext Datenbank-Tabellen sollte noch ergänzt werden ob es einen "eindeutigen Schlüssel" gibt/geben soll.id NAME IP
Andernfalls ist es reine Glückssache, ob ein INSERT klappen kann.
P.S. Lass dich nicht abschrecken von den vielen pingeligen Rückfragen.
Sei froh, dass du früh auf die ganzen Stolpersteine aufmerksam gemacht wirst und nicht erst beim "go live" deiner Appz damit konfrontiert wirst
Grüße
Biber
Hi !
Sorry aber warum lernst Du nicht mal erst die Syntax von SQL und PHP, so wie Du das angehst wird das nie was. Alle Infos über (My-) SQL und PHP gibt es doch frei im Net, siehe masterG's Post....Man setzt sich doch auch nicht ans Lenkrad eines Porsches, wenn man noch nicht mal in der Fahrschule war...Kopfschüttel...
mrtux
Sorry aber warum lernst Du nicht mal erst die Syntax von SQL und PHP, so wie Du das angehst wird das nie was. Alle Infos über (My-) SQL und PHP gibt es doch frei im Net, siehe masterG's Post....Man setzt sich doch auch nicht ans Lenkrad eines Porsches, wenn man noch nicht mal in der Fahrschule war...Kopfschüttel...
mrtux
Hi Fleckmen,
wenn ein SQL-Statement nicht funktioniert, ist es hilfreich, sich dieses
mal mit echo $sql; ausgeben zu lassen. Dann sieht man schonmal, ob
die Syntax korrekt ist.
Deine Fehler sind folgende:
In der ersten Zeile legst du das gesamte Statement in der Variablen $sql ab,
und hängst anschließend die geposteten Textfelder hintendran.
Im Teil . . . values( . . . usw.) schreibst du in den Klammern name,typ . . . usw.
als "reinen Text", was PHP nicht interpretieren kann.
Also entweder es heißt . . . values('$name','$typ', . . . usw.), dann müsstest du vorher
die geposteten Textfelder in den entspr. Variablen ablegen: $name=$_POST['name']; . . . usw..
Oder du übernimmst die geposteten Textfelder direkt. Dann lautet das Insert-Statement:
Gruß
Günni
wenn ein SQL-Statement nicht funktioniert, ist es hilfreich, sich dieses
mal mit echo $sql; ausgeben zu lassen. Dann sieht man schonmal, ob
die Syntax korrekt ist.
Deine Fehler sind folgende:
In der ersten Zeile legst du das gesamte Statement in der Variablen $sql ab,
und hängst anschließend die geposteten Textfelder hintendran.
Im Teil . . . values( . . . usw.) schreibst du in den Klammern name,typ . . . usw.
als "reinen Text", was PHP nicht interpretieren kann.
Also entweder es heißt . . . values('$name','$typ', . . . usw.), dann müsstest du vorher
die geposteten Textfelder in den entspr. Variablen ablegen: $name=$_POST['name']; . . . usw..
Oder du übernimmst die geposteten Textfelder direkt. Dann lautet das Insert-Statement:
$sql="insert into tabelle(name,typ,os,ip,mac) values ('".$_POST['name']."','".$_POST['typ']."','".$_POST['os']."','".$_POST['ip']."','".$_POST['mac']."')";
Gruß
Günni