fleckmen
Goto Top

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:

<?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

Content-Key: 137541

Url: https://administrator.de/contentid/137541

Printed on: April 25, 2024 at 07:04 o'clock

Member: maretz
maretz Mar 05, 2010 at 15:37:57 (UTC)
Goto Top
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!
Member: Indrador
Indrador Mar 05, 2010 at 15:42:24 (UTC)
Goto Top
Hallo Fleckmen,

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'  
Gruß
Member: Fleckmen
Fleckmen Mar 05, 2010 at 15:52:13 (UTC)
Goto Top
Ich möchte meine Datenbank mit den Einträgen aus dem Formular füllen.
Die Tabelle in der Datenbank besteht aus

id NAME IP
Member: Biber
Biber Mar 05, 2010 at 16:02:09 (UTC)
Goto Top
Moin Fleckmen,

Zitat von @Fleckmen:
Ich möchte meine Datenbank mit den Einträgen aus dem Formular füllen.
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.
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
Member: Fleckmen
Fleckmen Mar 05, 2010 at 16:56:49 (UTC)
Goto Top
Ich beschäftige mich erst seit ein paar Tagen mit dem eintragen von Daten in MySql.

Es soll jedes mal ein neuer Datensatz erstellt werden.
Außerdem muss ich noch hinzufügen dass wenn kein Eintrag gemacht wird

Meine Datenbank:
http://www.pic-upload.de/view-4831658/Unbenannt.jpg.html
Member: masterG
masterG Mar 05, 2010 at 17:15:20 (UTC)
Goto Top
MySQL INSERT / UPDATE

Gruß
masterG
Member: Fleckmen
Fleckmen Mar 05, 2010 at 18:21:47 (UTC)
Goto Top
Ich habe jetzt meine Datei geändert:

<?php

include 'config.php';  

$sql = " INSERT INTO computer (name, typ, os, ip, mac) VALUES(name, typ, os, ip, mac)";  
$sql .= " name			=$_POST['name']";  
$sql .= " typ			=$_POST['typ']";  
$sql .= " os			=$_POST['os']";  
$sql .= " ip			=$_POST['ip']";  
$sql .= " mac			=$_POST['mac']";  

$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());  
}

?>

Jetzt habe ich aber ein einen neuen Error:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\xampp\htdocs\newid.php on line 6  
Member: mrtux
mrtux Mar 05, 2010 at 18:32:38 (UTC)
Goto Top
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
Member: Guenni
Guenni Mar 05, 2010 at 20:01:17 (UTC)
Goto Top
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:

$sql="insert into tabelle(name,typ,os,ip,mac) values ('".$_POST['name']."','".$_POST['typ']."','".$_POST['os']."','".$_POST['ip']."','".$_POST['mac']."')";  

Gruß
Günni
Member: Fleckmen
Fleckmen Mar 06, 2010 at 00:24:35 (UTC)
Goto Top
Ich hab es jetzt!

$name = $_POST['name'];  
$typ = $_POST['typ'];  
...

$sql = "INSERT INTO computer (id, name, typ,...) VALUES('".$name."','".$typ."',...)";