SQL Syntax Fehler?

Bandit_profi

Erfahrenes Mitglied
Tag,
bin gerade dabei nen kleines simples Guestbook zu basteln.
Datei zum eintragen:
Code:
<?
  include("connect.php");
  ?>
<table>
 <tr>
 <form action="index.php?show=add.php" method="post"><tr>
 <input type="hidden" name="action" value="save">
  <td width="100" class="gb">Name:</td>
  <td width="100"><input type=text name="name"></td>
 </tr>
 <tr>
  <td width="100" class="gb">Email:</td>
  <td width="100"><input type="text" name="mail"></td>
 </tr>
 <tr>
  <td width="100" class="gb">Homepage: </td>
  <td width="100"><input type="text" name="homepage" value="http://"></td>
 </tr><tr>
  <td width="100" class="gb" valign="top">Eintrag:</td>
  <td width="100"><textarea name="comment" rows="6" cols="25"></textarea></td>
 </tr><tr>
  <td width="100" class="gb"> </td>
  <td width="100"><input type="submit" value="eintragen"></td></form>
 </tr>
 </form>
</table>

So also dann wird das alle an die Datei add.php gesendet.
Nun bekomm ich da aber nen Fehler aus gegeben:
You have an error in your SQL syntax near '(,name, mail, homepage, comment) VALUES ('','', '', 'http://', '')' at line 1

Datei add + connect:
PHP:
<?
  $enter = "INSERT INTO $dbbank (name, mail, homepage, comment) VALUES ('','$name', '$mail', '$homepage', '$comment')";
  $eintragen = mysql_query($enter);
  echo mysql_error();
?>
Ihr Eintrag wurde erfolgreich gespeichert! <a href="?show=book.php" class="normal">[Aktualiesiren]</a>

//DATEI CONNECT
<?
 $dbhost = "localhost";
 $dbuser = "root";
 $dbpass = "";
 $dbbank = "book";
 $dbtable = "eintrag";

  mysql_connect("$dbhost","$dbuser","$dbpass") or die
  ("Vernimdung zur Dantenbank war nicht möglich, bitte überprüfen sie die Einstellungen!");
  mysql_select_db("$dbbank") or die ("Die benötigte Datenbank existiert nicht!");
  ?>

Ich hab eigentlich keine Ahnung was die Fehlermeldung meint.
Kann mir bitte wer helfen? Danke.
Bandit

P.s.: Das erste '', bei den Values sol die ID eintragen!
 
Bandit_profi hat gesagt.:
PHP:
  $enter = "INSERT INTO $dbbank (name, mail, homepage, comment) VALUES ('','$name', '$mail', '$homepage', '$comment')";
Du hast nur 4 spalten angegeben willst aber 5 Sachen eintragen, ich gehe davon aus das die ID Auto_inc. ist, oder ? Naja einfach '', raus nehmen und es sollte gehen !
 
Hm hab das ausgebessert aber es funktioniert leider immer noch nicht.
Woran könnte es denn noch liegen? Was ist eigentlich ein Syntax Fehler?

Bandit
 
PHP:
$eintragen = mysql_query($enter);
// muss heißen
$eintragen = mysql_query($enter, $dbh);
// dbh = handle auf DB
Am bsten du schreibst
PHP:
$eintragen = mysql_query($enter, $dbh) or DIE (mysql_error());
 
auf jeden fall muss das schonmal so aussehen:

PHP:
<?

// connect daten

mysql_connect($dbhost,$dbuser,$dbpass) or die
  ("Verbindung zur Datenbank war nicht möglich, bitte überprüfen sie die Einstellungen!");
mysql_select_db($dbbank) or die ("Die benötigte Datenbank existiert nicht!");

$eintragen = mysql_query("INSERT INTO $dbbank (name, mail, homepage, comment) VALUES ('$name', '$mail', '$homepage', '$comment')");
?>

Also erst verbinden, dann abfragen.
Und außerdem die " " bei Variablen weg ...
dürfte so gehen
 
Zuletzt bearbeitet:
Tag,
also ich bekomme das nicht gebacken. Habe jetzt alles in eine Datei gepackt und das schaut dann so aus:
PHP:
<?php
 $dbhost = "localhost";
 $dbuser = "root";
 $dbpass = "";
 $dbbank = "book";
 $dbtable = "eintrag";

  mysql_connect("$dbhost","$dbuser","$dbpass") or die
  ("Vernimdung zur Dantenbank war nicht möglich, bitte überprüfen sie die Einstellungen!");
  mysql_select_db("$dbbank") or die ("Die benötigte Datenbank existiert nicht!");
?>
<?
 switch ($act){
 Default:
 ?>
<table border="0" colspacing="0" cellpadding="0">
 <form action="?show=add.php&act=add" methode="post">
 <tr>
 <form action="index.php?show=add.php" method="post"><tr>
 <input type="hidden" name="action" value="save">
  <td width="100" class="gb">Name:</td>
  <td width="100"><input type=text name="name"></td>
 </tr>
 <tr>
  <td width="100" class="gb">Email:</td>
  <td width="100"><input type="text" name="mail"></td>
 </tr>
 <tr>
  <td width="100" class="gb">Homepage: </td>
  <td width="100"><input type="text" name="homepage" value="http://"></td>
 </tr><tr>
  <td width="100" class="gb" valign="top">Eintrag:</td>
  <td width="100"><textarea name="comment" rows="6" cols="25"></textarea></td>
 </tr><tr>
  <td width="100" class="gb"> </td>
  <td width="100"><input type="submit" value="eintragen"></td></form>
 </tr>
 </form>
</table>
<? break;
case "add":
?>
<?
 
  $enter = mysql_query("INSERT INTO $dbtable (name, mail, homepage, comment) VALUES ('$name', '$mail', '$homepage', '$comment')");
  $eintragen = mysql_query($enter);
  echo mysql_error();
  ?>
Ihr Eintrag wurde erfolgreich gespeichert! <a href="?show=book.php" class="normal">[Aktualiesiren]</a>
<? break;
}
?>

So also Probleme:
1. Er trägt nichts in meine Datenbank ein,
2. Er sitched nicht zu "add"!

Kann sich das mal wer ansehen und mir eventuell sagen was daran falsch ist? Hab mir jetzt schon andere Scripts angeschaut und vom aufbau des Scripts finde ich eigentlich keine Unterschiede. Was kann das nur sein?

Danke für jede Hilfe
Bandit
 
Zuletzt bearbeitet:
Also du bekommst aber eine Verbindung zur Datenbank, die Datenbank und die Tabelle ist vorhanden und es heißen auch alle Spalten in der Tabelle so wie im Script?

Außerdem wie gesagt:

PHP:
 mysql_connect($dbhost,$dbuser,$dbpass) or die // ...

sollte das eher so aussehen. genau so bei select_db
und das hier:

PHP:
?>
<?

bringt's auch nicht wirklich :)

und das hier:

PHP:
$enter = mysql_query("INSERT INTO $dbtable (name, mail, homepage, comment) VALUES ('$name', '$mail', '$homepage', '$comment')");
  $eintragen = mysql_query($enter);

ist sowieso ganz falsch, denn du hast in der variable $enter schon eine mysql_query also kannst du $eintragen ganz weglassen, dann dürfte es auch gehen.

und außerdem!!!!!
wenn du das nur in einer variable speicherst passiert sowieso gar nichts

dann muss das oben genannte stück mit $enter und $eintragen so aussehen:

PHP:
mysql_query("INSERT INTO $dbtable (name, mail, homepage, comment) VALUES ('$name', '$mail', '$homepage', '$comment')");

wenn du das nur ín einer var speicherst, dann passiert mit der datenbank nichts
 
Was meinst du mit dem
PHP:
mysql_connect($dbhost,$dbuser,$dbpass) or die // ...
??? ist doch eigentlich eh richtig oder etwa nicht? Die Datenbank wird ja auch connected.
mysql_connect("$dbhost","$dbuser","$dbpass") or die
("Vernimdung zur Dantenbank war nicht möglich, bitte überprüfen sie die Einstellungen!");


Das ?> <? ist dort nur weil ich das sepparat habe. Kann man aber weg lassen da sollte auch nichts anderst sein.




PHP:
$enter = mysql_query("INSERT INTO $dbtable (name, mail, homepage, comment) VALUES ('$name', '$mail', '$homepage', '$comment')");
  $eintragen = mysql_query($enter);

Das war mehr ein Fehler im eifer des Gefechts ;-)
das erste mysql_query steht natürlich nicht da, komm nur weil ich mich grad net konzentrieren konnet auf posten wegen ICQ Chat ;-)

Ok dann danke, versteh jetzt warum er nichts einträgt. Jetzt wäre nur noch das Problem offen warum das Script beim Absenden nicht auf add switched?

Danke,
Bandit
 
deswegen:

Code:
<table border="0" colspacing="0" cellpadding="0"> <---
 <form action="?show=add.php&act=add" methode="post">
 <tr>
 <form action="index.php?show=add.php" method="post"><tr> <---

2 x form
und ich würd start ?show=add.php&act=add auch zwei hidden-felder nehmen, denn bei mir hat das irgendwie nie funktioniert, na egal, wird schon klappen
 
*lol* ok also es funktioiert jetzt. Der Code schaut jetzt so aus:
PHP:
<?php
 $dbhost = "localhost";
 $dbuser = "root";
 $dbpass = "";
 $dbbank = "book";
 $dbtable = "eintrag";

  mysql_connect("$dbhost","$dbuser","$dbpass") or die
  ("Vernimdung zur Dantenbank war nicht möglich, bitte überprüfen sie die Einstellungen!");
  mysql_select_db("$dbbank") or die ("Die benötigte Datenbank existiert nicht!");
?>
<?
 switch ($action){
 Default:
 ?>
<table border="0" colspacing="0" cellpadding="0">
 <form action="?show=add.php&action=save" methode="post">
 <tr>
 <input type="hidden" name="action" value="save">
  <td width="100" class="gb">Name:</td>
  <td width="100"><input type=text name="name"></td>
 </tr>
 <tr>
  <td width="100" class="gb">Email:</td>
  <td width="100"><input type="text" name="mail"></td>
 </tr>
 <tr>
  <td width="100" class="gb">Homepage: </td>
  <td width="100"><input type="text" name="homepage" value="http://"></td>
 </tr><tr>
  <td width="100" class="gb" valign="top">Eintrag:</td>
  <td width="100"><textarea name="comment" rows="6" cols="25"></textarea></td>
 </tr><tr>
  <td width="100" class="gb"> </td>
  <td width="100"><input type="submit" value="eintragen"></td></form>
 </tr>
 </form>
</table>
<? break;
case "save":
  mysql_query("INSERT INTO $dbtable (name, mail, homepage, comment) VALUES ('$name', '$mail', '$homepage', '$comment')");
  echo mysql_error();
  ?>
Ihr Eintrag wurde erfolgreich gespeichert! <a href="?show=book.php" class="normal">[Aktualiesiren]</a>
<? break;
}
?>
Fett mercy an alle und vor allem an gouraud.
Hab jetzt alles gecheckt rofl danke.

Bandit
 
Zurück