[Gelöst] MySQL bestehenden Datensatz ändern

CreamyCewie

Photoshop-Künstler
Hi.

ich hab wieder ein Mal ein Problem mit PHP/MySQL.

Ich benutze folgenden Code um Daten in eine Tabelle zu Schreiben:
PHP:
$sql_command = 
								"
								INSERT INTO
								UserData(FirstName, LastName, BirthDate, Email, Passwort, Adress, IsActive, Newsletter)
								VALUES
								(
									'".$firstname."',
									'".$lastname."',
									'".$birthdate."',
									'".$email."',
									'".$passwort."',
									'".$adresse."', 'N', 'Y'
								);";
die 1te Spalte der Tabelle ist KundenID (diese wird automatisch zugewießen (auto-increment))

Jetz will ich diesen Datensatz ändern.
zuerst dachte ich an
PHP:
$sql_command = 
								"
								UPDATE
								UserData(FirstName, LastName, BirthDate, Email, Passwort, Adress, IsActive, Newsletter)
								WHERE KundenID = '$UserID'
								VALUES
								(
									'".$firstname."',
									'".$lastname."',
									'".$birthdate."',
									'".$email."',
									'".$passwort."',
									'".$adresse."', 'N', 'Y'
								);";
Hier meckert er jedoch an der Syntax:
Es konnte kein SQL-Query vorbereitet werden: 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 '(FirstName, LastName, BirthDate, Email, Passwort, Adress, IsActive, Newsletter) ' at line 2

Wie sähe hier die korrekte SQL-Syntax aus?

Danke & LG Creamy
 
Ob er korrekt ist keine Ahnung. Da ich nicht weiß, wo deine Variablen zum Zeitpunkt des Änderns abgespeichert sind, habe ich mal die vom INSERT genommen.

$sql_command =
"
UPDATE UserData SET FirstName = '".$firstname."', LastName = '".$lastname."', BirthDate = '".$birthdate."', Email = '".$email."', Passwort = '".$passwort."', Adress = '".$adresse."', IsActive = 'N/Y', Newsletter = 'Y/N'
WHERE KundenID = '$UserID";

Bei den rotmarkierten den aktuellen oder geänderten Wert einfügen, deshalb habe ich beide Möglichkeiten rein. Entweder Y oder N musst Du nehmen. Wenn Du nur einen Wert ändern möchtest, kannst Du es vereinfachen.

Bsp: von inaktiv zu aktiv:

$sql_command =
"
UPDATE UserData SET IsActive = 'Y'
WHERE KundenID = '$UserID";
 
danke, die Daten holt es sich aus POST-Elementen und legt sie in die diversen Varriablen.
Das Formular sieht so aus:

PHP:
<form action="changedata.php" method="post">
                        
                                    	 	Email-Adresse<br>
                                            <input type="text" size="41" name="data-email" value="<?php echo ($email) ?>">
                                            
                                             
                                             
                                            Passwort<br>
                                          
                                            <br><br><br />
                                            
                                            Vorname<br>
                                            <input type="text" size="45" name="data-firstname" value="<?php echo ($firstname) ?>">
                                            
                                            <br>
                                            
                                            Nachname<br>
                                            <input type="text" size="45" name="data-lastname" value="<?php echo ($lastname) ?>">
                                            
                                            
                                            <br><br><br />
                                            
                                            
                                            Adresse<br />
                                            <textarea rows="6" cols="45" name="data-adress"> <?php echo ($adress) ?></textarea>
                                            <br />
                                            <br /><br />

                                            <?php
											
												if ($newsletter == "N") {
													echo ("<input type=\"checkbox\" name=\"data-newsletter\" value=\"agree\"> Ich will den <a href=\"newsletter.php\" title=\"Mehr Informationen zum Newsletter\"></u>Newsletter</u></a> erhalten");
												}
											
												else if ($newsletter == "Y"){
													echo ("<input checked=\"checked\" type=\"checkbox\" name=\"data-newsletter\" value=\"agree\"> Ich will den <a href=\"newsletter.php\" title=\"Mehr Informationen zum Newsletter\"></u>Newsletter</u></a> erhalten");
												}
											
											
											?>
                                            <br><br />
                                            <input type="submit" value="Einstellungen übernehmen"> 
                                            </p>
                                           <br /><br /><br>
                            
                        </form>

Das CodeSnippet der changedata.php sieht so aus:
PHP:
 <?php
						
						
						error_reporting(E_ALL);
						
						$UserID = $_COOKIE['userid'];
						
							// Varriablen übernehmen
							$email = $_POST["data-email"];
							$pre_passwort = $_POST["data-passwort"];
							$passwort = htmlentities($pre_passwort, ENT_QUOTES, "UTF-8");
							$pre_firstname = $_POST["data-firstname"];
							$firstname = htmlentities($pre_firstname, ENT_QUOTES, "UTF-8");
							$pre_lastname = $_POST["data-lastname"];
							$lastname = htmlentities($pre_lastname, ENT_QUOTES, "UTF-8");
							$pre_adresse = ($_POST["data-adress"]);
							$adresse = htmlentities($pre_adresse, ENT_QUOTES, "UTF-8");
							if (isset($_POST["data-newsletter"])) {
							$newsletter = ($_POST["data-newsletter"]);}
						?>
                        
						<?php
							// verbindung zur Datenbank herstellen
							 include ("inc/mysql/connect-customers.php");
						?>
                        
			<?php
							
				//SQL-Command vorbereiten
						if ( isset($newsletter )) {
							$sql_command =
								"
								UPDATE UserData SET FirstName = '.$firstname.', LastName = '.$lastname.', Email = '.$email.', Passwort = '.$passwort.', Adress = '.$adresse.', Newsletter = 'Y'
								WHERE KundenID = '$UserID'"; 
						}
						
						else {
						
							$sql_command = 
								"
								UPDATE UserData SET FirstName = '.$firstname.', LastName = '.$lastname.', Email = '.$email.', Passwort = '.$passwort.', Adress = '.$adresse.', Newsletter = 'N'
								WHERE KundenID = '$UserID'";
						}
				
										//SQL-Command ausführen
						mysqli_query($customer_database , $sql_command);
						$summary = $customer_database->prepare($sql_command);
						if (!$summary) {
							die ('Es konnte kein SQL-Query vorbereitet werden: '.$customer_database->error);
						}

ich lese zuerst aus, ob der User den newsletter erhalten will (daher auch die if-abfrage im Formular) - das funktioniert.

Wenn cih heir versuche meine Daten zu ändern, erhalte ich zu aller erst folgenden Fehler:
Notice: Undefined index: data-adress in /home/.sites/127/site693/web/TEST/changedata.php on line 61
d.H. er übernimmt die Adresse nicht :(

den rest trägt er ein, BIS AUF DEN NEWSLETTER, da steht immer "N"

wo könnten diese 2 Fehler liegen?

danke & lg
 
Diese Stelle suchen:

//SQL-Command vorbereiten
if ( isset($newsletter )) {

unter //SQL-Command vorbereiten einfügen.

echo "Newsletter = ".$newsletter."<br>";
echo "Adresse = ".$adresse."<br>";

exit();

und schauen, ob die beiden Variablen noch befüllt sind bevor dein Ändern kommt.
 
Was kam den Raus??

Newsletter = ? Leer oder stand da was??
Adresse = ? Leer oder stand da was??
 
ersetze mal:

if ( isset($newsletter )) {

mit:

if (empty($newsletter) == FALSE) {

Wenn ich das richtig sehe, ist in der Adresse ein Komma??

Adresse = ssalcndhiuaskjnaskj,sa


Dann müsst Du das Maskieren:

Adress = '".$adresse."',
 
jetzt, wo ich if ( isset($newsletter )) {

mit:

if (empty($newsletter) == FALSE) {
ersetzt habe, geht beides.

Danke & LG

Creamy
 
Oben