Mysql daten in formular laden editieren und wieder in mysql abspeichern

Bei mir steht da schon "Select * from 'daten' Where 1" drin was ich ja brauche zum einlesen der daten ins formular.

Ich habe den befehl genau so eingegeben
PHP:
update daten SET id= 'id',
                         C1= 'C1', 
                         C2= 'C2',  
                         C3= 'C3',
                         C4= 'C4',
                         C5= 'C5',
                         C6= 'C6',
                         C7= 'C7',
                         C8= 'C8',
                         C9= 'C9',
                         C10= 'C10',
                         C11= 'C11',
                         name= 'name',
                         datum= 'datum',
                         WHERE `id` = '$id' LIMIT 1
und er sagt mir (kurzgefast) :
#1064 Sql syntax fehler und am schluss die angabe ' WHERE `id` = '$id' LIMIT 1' at line 15
Die problematik ist ja nur das er einen neune eintrag macht anstelle die Id zu verwenden und die daten zu überschreiben.
 
4 Sachen die mir auffallen:

Du gibst ihm ja einen String $id mit. Wenn Du das 1 zu 1 in PHPMyAdmin kopierst, weiß er ja nicht was $id ist. Außerdem ist ID doch ein Integerfeld oder? Wozu dann die Hochkommas?

Du brauchst das ID Feld nicht extra updaten. Er aktualisiert ja den Datensatz den Du in der WHERE Klausel per ID definierst. Die ID bleibt gleich.

Vor WHERE darf außerdem kein Komma stehen.

Bei Update gibts kein LIMIT. Zumindest nicht wenn die ID eindeutig ist...was sie sein sollte ;)

PHP:
$sql = "update daten SET  
                         C1= '".$C1."',  
                         C2= '".$C2."',   
                         C3= '".$C3."', 
                         C4= '".$C4."', 
                         C5= '".$C5."', 
                         C6= '".$C6."', 
                         C7= '".$C7."', 
                         C8= '".$C8."', 
                         C9= '".$C9."', 
                         C10= '".$C10."', 
                         C11= '".$C11."', 
                         name= '".$name."', 
                         datum= '".$datum."'  
                         WHERE id = ".$id.";";
 
Zuletzt bearbeitet:
ich habe mir das jetzt 1:1 kopiert von dir und habe es im phpmyadmin eingegeben und es kommt jetzt kein fehler mehr.allso ist das schon mal geschaft.
Leider überschrieb er immer noch nicht die Id erstellt immer noch eine neue.:-(
 
mach doch mal
PHP:
print $sql;
darunter und paste hier mal die Ausgabe davon. Ein Updatebefehl erzeugt normal keinen neuen Datensatz.
 
Zuletzt bearbeitet:
das it dem print geht nicht egal wie ich das schriebe es kommt immer ein syntax fehler.
Ausserdem wenn ich im PhPmyadmin eben auf den sql befehl gehe,steht da nur,
der Select befehl,und bei einem anderen formular speichere ich genau so die neuen einträge. was schon mal erklährt warum er immer einen neuen eintrag macht.
 
PHP:
$sql = "update daten SET  
                         C1= '".$C1."',  
                         C2= '".$C2."',   
                         C3= '".$C3."', 
                         C4= '".$C4."', 
                         C5= '".$C5."', 
                         C6= '".$C6."', 
                         C7= '".$C7."', 
                         C8= '".$C8."', 
                         C9= '".$C9."', 
                         C10= '".$C10."', 
                         C11= '".$C11."', 
                         name= '".$name."', 
                         datum= '".$datum."'  
                         WHERE id = ".$id.";";
print $sql;

Der Printbefehl muss in das PHP Script. Schon klar oder? Und zwar direkt darunter wo Du die Query initilisierst.

Zu dem neuen Eintrag. Weder ein SELECT noch ein UPDATE erzeugt einen neuen Datensatz. Nur ein INSERT macht das.
 
Zuletzt bearbeitet:
Er spuckt das au:
PHP:
 select * FROM daten WHERE id = '51';Beck, Anita

Wie ich schon gedancht habe das er das Select frist und mit dem speichere ich ja die daten normaler weise in die datenbank und erstelle auch gleich ne neue id.wenn ich den aber nicht drin habe ladet er mihr ja die daten nicht ins formular und ich kann sie gar nicht sehen von wegen ändern.Ich poste dir jetzt einfach mal mein ganzen code ohne das print :
PHP:
<form action="feedback.php" method="post">
<textarea name="name" rows="1" cols="105">
<?php

$db_dbname = 'zielvereinbarung'; 
$db_user = 'root'; 
$db_pw = ''; 
$db_host = 'localhost'; 

$tabellenname = 'daten'; 
$id =Trim($_POST['id']);  
$name = $_POST['name'];
$C1 = $_POST['C1'];
$C2 = $_POST['C2'];
$C3 = $_POST['C3'];
$C4 = $_POST['C4'];
$C5 = $_POST['C5'];
$C6 = $_POST['C6'];
$C7 = $_POST['C7'];
$C8 = $_POST['C8'];
$C9 = $_POST['C9'];
$C10 = $_POST['C10'];
$C11 = $_POST['C11'];
$datum = $_POST ['datum'];

mysql_connect($db_host, $db_user, $db_pw); 
mysql_select_db($db_dbname);

$sql = ("select * FROM daten WHERE id = '".$_GET['id']."';");
$q = mysql_query($sql);
$data = mysql_fetch_array($q);

echo $data['name'];        
$sql = ("update daten SET C1= '".$C1."',  
                          C2= '".$C2."',   
                          C3= '".$C3."', 
                          C4= '".$C4."', 
                          C5= '".$C5."', 
                          C6= '".$C6."', 
                          C7= '".$C7."', 
                          C8= '".$C8."', 
                          C9= '".$C9."', 
                          C10= '".$C10."', 
                          C11= '".$C11."', 
                          name= '".$name."', 
                          datum= '".$datum."'  
                          WHERE id = '".$id."' LIMIT 1");  

                   
?>

</textarea >
<br>
<textarea name="C1" rows="1" cols="105">
<?php 
echo $data['C1'];
?>
</textarea>
<br>
<textarea name="C2" rows="1" cols="105">
<?php 
echo $data['C2'];
?>
</textarea>
<br>
<textarea name="C3" rows="1" cols="105">
<?php 
echo $data['C3'];
?>
</textarea>
<br>
<textarea name="C4" rows="1" cols="105">
<?php 
echo $data['C4'];
?>
</textarea>
<br>
<textarea name="C5" rows="1" cols="105">
<?php 
echo $data['C5'];
?>
</textarea>
<br>
<textarea name="C6" rows="1" cols="105">
<?php 
echo $data['C6'];
?>
</textarea>
<br>
<textarea name="C7" rows="1" cols="105">
<?php 
echo $data['C7'];
?>
</textarea>
<br>
<textarea name="C8" rows="1" cols="105">
<?php 
echo $data['C8'];
?>
</textarea>
<br>
<textarea name="C9" rows="1" cols="105">
<?php 
echo $data['C9'];
?>
</textarea>
<br>
<textarea name="C10" rows="1" cols="105">
<?php 
echo $data['C10'];
?>
</textarea>
<br>
<textarea name="C11" rows="1" cols="105">
<?php 
echo $data['C11'];
?>
</textarea>
<br>
<textarea name="datum" rows="1" cols="105">
<?php 
echo $data['datum'];
?>
</textarea>
<br>
<input type="submit">
</form>
Vileicht hast du noch ne idee.

und wenn ichs genau dort einsetze wo du sagst kommt das raus:
PHP:
 update daten SET C1= '',
 
Wie gesagt. Ein SELECT erzeugt keinen neuen Datensatz.

Und hast noch immer die alte Query in Deinem Code.

Statt

PHP:
$sql = ("update daten SET C1= '".$C1."',   
                          C2= '".$C2."',    
                          C3= '".$C3."',  
                          C4= '".$C4."',  
                          C5= '".$C5."',  
                          C6= '".$C6."',  
                          C7= '".$C7."',  
                          C8= '".$C8."',  
                          C9= '".$C9."',  
                          C10= '".$C10."',  
                          C11= '".$C11."',  
                          name= '".$name."',  
                          datum= '".$datum."'   
                          WHERE id = '".$id."' LIMIT 1");
PHP:
$sql = ("update daten SET C1= '".$C1."',   
                          C2= '".$C2."',    
                          C3= '".$C3."',  
                          C4= '".$C4."',  
                          C5= '".$C5."',  
                          C6= '".$C6."',  
                          C7= '".$C7."',  
                          C8= '".$C8."',  
                          C9= '".$C9."',  
                          C10= '".$C10."',  
                          C11= '".$C11."',  
                          name= '".$name."',  
                          datum= '".$datum."'   
                          WHERE id = ".$id.";");
 
Hallo,



Updaten der Datenbank per ID

mysql_query("UPDATE `Tabelle`.`in Datenbank`
SET `Spalte 1` = '".$_POST['inhalt']."',`Spalte n` = '".$_POST['inhalt n']."'
WHERE `Tabelle`.`ID` = '".$_POST['ID']."';") or die (mysql_error());

willst du die Daten in einem Textfelt vor der Änderung noch anzeigen lassen?

mfg

Compane
 
Mir scheint, dass du zur Zeit einfach wild rumprobierst. Versuch das Ganze noch einmal strukturiert anzugehen. Wenn die Daten in den Variablen in deinem Update korrekt sind, sollte der Update wie gewünscht funktionieren. Ich kann mir vorstellen, dass sich sonst im Script irgendwo unbemerkt ein INSERT absetzt. Prüf mal nach Editieren der Daten, ob im entsprechenden Datensatz Daten geändert wurden. Denn wenn keine Fehlermeldung kommt, dann wird der Update ausgeführt. Es ist unmöglich, dass sich der Update wie ein Insert verhält.
 
Zurück