Problem mit uapdate set Befehl

forsterm

Erfahrenes Mitglied
Hallo,

weiß jemand warum folgender Code nicht funktioniert?

PHP:
<?PHP
$sql = mysql_query("UPDATE tabelle SET Titel = '".$Titel."', Musik = '".$Musik."', Text = '".$Text."' WHERE id = $id"); 
  echo "Ihre Daten wurden erfolgreich geändert.";   
?>
 
Zuletzt bearbeitet:
Gibt es irgendeine Fehlermeldung?
Ansonsten würde ich versuchen, keine Sonderzeichen in Variablen zu benutzen, also auch Umlaute wie ä, ö, ü, usw....

Ansonsten probier mal das hier und gib die Fehlermeldung an:
PHP:
<?
       if ($Ändern == "Ändern"){
       $sql = "UPDATE $dbtabelle Set Titel = '$Titel', Musik = '$Musik', Text = '$Text' WHERE id = $id";
       $result  =  mysql_query($sql);
       if(!$result) { echo mysql_error(); }
       else { echo "Update war erfolgreich!"; }
       }
?>

Grüße,
Flex
 
Hi

Ich hab mich jetzt nur auf das UPDATE unten konzentriert:

PHP:
$SQL_CONNECT = mysql_connect ("SERVER", "USER", "PASSWORD");
$sql = "
UPDATE ".$dbtabelle."
SET `Titel` = '".$Titel."',
`Musik` = '".$Musik."',
`Text` = '".$Text."'
WHERE `id` = ".$id;
$result = mysql_query($sql,$SQL_CONNECT);
Ich glabe du sollstst witer oben das auch nochmal überdenken^^

zu beachten:
1.) felfer aus deiner Datenbank inner so schreiben: `Titel` denn titel, oder id konnen schon von MySQL in gebrauch sein!
2.) vatiablen nicht als string schreiben, also die " unterbrechen so: ".$dbtabelle."
3.) ich glaub du hast dein mysql_connect() vergessen, denn sicher ist sicher ;-)

bei fragen einfach auf www.php.net die befehle nachschlagen^^

Gruß
DeineOmma

P.S. AHHHHHHHHHHHHHHHHHHHH lass die Ä,Ö,Ü,ß, usw. aus deinen variablen! windowsserver kriegen das warcheinlich noch hin, so krank wie die sind, aber Linux kriegt da krämpfe...
 
Zuletzt bearbeitet:
Flex hat gesagt.:
Gibt es irgendeine Fehlermeldung?
Ansonsten würde ich versuchen, keine Sonderzeichen in Variablen zu benutzen, also auch Umlaute wie ä, ö, ü, usw....

Ansonsten probier mal das hier und gib die Fehlermeldung an:
PHP:
<?
if ($Ändern == "Ändern"){
$sql = "UPDATE $dbtabelle Set Titel = '$Titel', Musik = '$Musik', Text = '$Text' WHERE id = $id";
$result = mysql_query($sql);
if(!$result) { echo mysql_error(); }
else { echo "Update war erfolgreich!"; }
}
?>

Grüße,
Flex

Hallo,

hab jetzt folgendes Script getestet,

PHP:
<?PHP
 $dbhost = "localhost";

	@mysql_connect($dbhost, $dbuser, $dbpass); 
		// Auswahl der Datenbank 
	@$x=mysql_select_db($dbdata); 
		if (empty($x)) { 
		   echo "Fehler beim Verbinden mit dem Datenbankserver<br>"; 
		   exit; 
		} 
 $Titel = $_POST['Titel'];
 $Musik = $_POST['Musik'];
 $Text = $_POST['Text'];
?>
<form method="POST" action="edit.php">
 <p><input type="text" name="Titel" size="20"></p>
 <p><input type="text" name="Musik" size="20"></p>
 <p><input type="text" name="Text" size="20"></p>
 <p><input type="submit" value="Edit" name="Edit"></p>
</form>
<?
	   if ($Edit == "Edit"){ 
	   $sql = "UPDATE $dbtabelle Set Titel = '$Titel', Musik = '$Musik', Text = '$Text' WHERE id = $id"; 
	   $result  =  mysql_query($sql); 
	   if(!$result) { echo mysql_error(); } 
	   else { echo "Update war erfolgreich!"; } 
	   } 
?>

und folgende Fehlermeldung erhalten:

Code:
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
 
Also, ich hab bei mir jetzt einfach mal kurz eine Tabelle erstellt, die deiner ähnlich ist und habe den Fehler gefunden...

Hast du alle Variablen definiert?
Also:
PHP:
$dbhost = "localhost";
$dbuser = "xxx";
$dbpass = "xxx";
$dbdata = "xxx";
$dbtabelle = "xxx";

Und jetzt kommt das Problem, an dem die ganze Sache liegt...

Woher kommt bei dir die Variable $id?
Wenn ich die Variable $id als Hidden Field in das Formular einfüge, klappt das Script ohne Probleme... Wenn es nicht da ist, kommt bei mir die gleiche Fehlermeldung wie bei dir... Also, wo kriegst du die $id her? :)

Grüße,
Flex
 
Flex hat gesagt.:
Also, wo kriegst du die $id her?

Die $id wird per get übergeben.

EDIT:

Mir ist aufgefallen, dass wenn ich die $id in meinem PHP Script definiere, also irgern wo im Script folgendes schreibe:

PHP:
$id="100";

dass es dan funktiniert, aber wenn ich die $id nicht denfiniere, dann funktioniert es nicht.
 
Zuletzt bearbeitet:
Wie ist die Einstellung von "register_globals"? Ansonsten versuch es mal mit $_GET['id']...
 
Flex hat gesagt.:
Wie ist die Einstellung von "register_globals"?

Register_ Globals ist auf on eingestellt, mit $_GET['id'] gehts auch nicht, dass hab ich schon getestet.

EDIT:

So funktioniert es:

PHP:
<?PHP
 $dbhost = "localhost";
 // MySQL - Host, meist ist es localhost
 $dbpass = "xxx";
 // MySQL - Passwort
 $dbuser = "xxx";
 // MySQL - Benutzer
 $dbdata = "xxx";
 // MySQL - Datenbankname
 $dbtabelle = "xxx";
 // MySQL - Datenbanktabelle
 
	@mysql_connect($dbhost, $dbuser, $dbpass); 
		// Auswahl der Datenbank 
	@$x=mysql_select_db($dbdata); 
		if (empty($x)) { 
		   echo "Fehler beim Verbinden mit dem Datenbankserver<br>"; 
		   exit; 
		} 
 
 $id = "155";
	  if ($Speichern == "Speichern")
 {
 }
 else
 {
 $query = "SELECT * FROM $dbtabelle WHERE id = $id";
 $sql = mysql_query($query)
	   or die(mysql_error());
 

 while ($ds = mysql_fetch_object($sql)) {
	 $Titel = $ds->Titel;
	 $Musik = $ds->Musik;
	 $Text = $ds->Text;
 }
?>
 <form method="POST" action="edit.php">
  <p>Titel: 
  <input type="text" name="Titel" size="20" value="<? echo"$Titel"; ?>"></p>
  <p>Musik: 
  <input type="text" name="Musik" size="20" value="<? echo"$Musik"; ?>"></p>
  <p>Text: 
  <input type="text" name="Text" size="20" value="<? echo"$Text"; ?>"></p>
  <p><input type="submit" value="Speichern" name="Speichern"></p>
	   </form>
	   <form method="POST" action="index.php">
  <p><input type="submit" value="Abbrechen" name="Abbrechen"></p>
	   </form>
<?
	   }
	  if ($Speichern == "Speichern")
 {
		$sql = "UPDATE $dbtabelle Set Titel = '$Titel', Musik = '$Musik', Text = '$Text' WHERE id = $id"; 
		$result  =  mysql_query($sql); 
		if(!$result) { echo mysql_error(); } 
		else { echo "Update war erfolgreich!"; } 
 }
?>


So funktioniert es aber nicht:

PHP:
<?PHP
 $dbhost = "localhost";
 // MySQL - Host, meist ist es localhost
 $dbpass = "xxx";
 // MySQL - Passwort
 $dbuser = "xxx";
 // MySQL - Benutzer
 $dbdata = "xxx";
 // MySQL - Datenbankname
 $dbtabelle = "xxx";
 // MySQL - Datenbanktabelle
 
	@mysql_connect($dbhost, $dbuser, $dbpass); 
		// Auswahl der Datenbank 
	@$x=mysql_select_db($dbdata); 
		if (empty($x)) { 
		   echo "Fehler beim Verbinden mit dem Datenbankserver<br>"; 
		   exit; 
		} 
 
 $id = $_GET['id'];
	  if ($Speichern == "Speichern")
 {
 }
 else
 {
 $query = "SELECT * FROM $dbtabelle WHERE id = $id";
 $sql = mysql_query($query)
	   or die(mysql_error());
 

 while ($ds = mysql_fetch_object($sql)) {
	 $Titel = $ds->Titel;
	 $Musik = $ds->Musik;
	 $Text = $ds->Text;
 }
?>
 <form method="POST" action="edit.php">
  <p>Titel: 
  <input type="text" name="Titel" size="20" value="<? echo"$Titel"; ?>"></p>
  <p>Musik: 
  <input type="text" name="Musik" size="20" value="<? echo"$Musik"; ?>"></p>
  <p>Text: 
  <input type="text" name="Text" size="20" value="<? echo"$Text"; ?>"></p>
  <p><input type="submit" value="Speichern" name="Speichern"></p>
	   </form>
	   <form method="POST" action="index.php">
  <p><input type="submit" value="Abbrechen" name="Abbrechen"></p>
	   </form>
<?
	   }
	  if ($Speichern == "Speichern")
 {
		$sql = "UPDATE $dbtabelle Set Titel = '$Titel', Musik = '$Musik', Text = '$Text' WHERE id = $id"; 
		$result  =  mysql_query($sql); 
		if(!$result) { echo mysql_error(); } 
		else { echo "Update war erfolgreich!"; } 
 }
?>
 
Zuletzt bearbeitet:
Setz einfach mal Hochkommatas um $id in den MySQL Querys... Dann funktioniert es zumindest bei mir...
Hätte man früher drauf kommen sollen... :suspekt:
 
Zurück