Datenbank bearbeiten

@Yaslaw: Gehört zwar nicht direkt zu diesem Beitrag aber ich Frage trotzdem.

Was ist so falsch daran wenn man die Zahl in einfache Anführungszeichen schreibt? Der Vergleich mit "=" klappt und auch wenn man "<" oder ">" nimmt, liefert die Abfrage das richtige Ergebnis.
 
@Big-A
Bitte

@tombe
Jepp, MySQL ist da so brav und dies selbständig korrigiert. Das kann aber auch zu Fehler führen wenn beide Werte in ' stehen. Und wenn man sich angewöhnt auch Zahlen in ' zu schreiben, dann fällt man irgendwann rein. Darum gleich angewöhnen die Zahlen ohne ' zu schreiben.
SQL:
-- Das folgende liefert true. Es findet ein Cast vom String zur Zahl statt, da eines eine Zahl ist
SELECT (2 < '12');

-- Das folgnede leifert false, da ein reiner Stringvergleich stattgefunden hat
SELECT ('2' < '12');
 
Zuletzt bearbeitet von einem Moderator:
Ich habe noch mal eine Frage :(

das mit dem Formular hat funktioniert und alles. Nun wird mir aber ein Syntaxfehler 1064 angezeigt und ich finde meinen Fehler einfach nicht.

PHP:
  if(isset($_POST["speichern"])){
	
	$Firma= $_POST["Firma"]; 
	$Nachname = $_POST["Nachname"];
	$Vorname = $_POST["Vorname"];
	$Strasse = $_POST["Strasse"];
	$Hausnummer = $_POST["Hausnummer"];
	$PLZ = $_POST["PLZ"];
	$Ort = $_POST["Ort"];
	$Telefonnummer = $_POST["Telefonnummer"];
	$Fax = $_POST["Fax"];
	$Mail = $_POST["Mail"];
	$Datum = $_POST["Datum"];
    
    $eintrag = "UPDATE Kundendaten 'Firma', 'Nachname', 'Vorname', 'Strasse', 'Hausnummer', 'PLZ', 'Ort', 'Telefonnummer', 'Fax', 'Mail', 'Datum' SET ".$Firma.",".$Nachname.",".$Vorname.",".$Strasse.",".$Hausnummer.",".$PLZ.",".$Ort.",".$Telefonnummer.",".$Fax.",".$Mail.",".$Datum." -WHERE 'ID'= '".$ID."'";
echo $eintrag; die();
	mysql_query($eintrag);
  }

Ich hoffe, das mir noch mal geholfen werden kann :confused:
 
Die Syntax für eine Updatequery sieht so aus:
SQL:
UPDATE `Kundendaten` SET Firma='{$firma}', Nachname='{$nachname}' WHERE id={$id}
 
Zuletzt bearbeitet von einem Moderator:
Hallo zusammen :)

dieses thema hat mir sehr weitergeholfen! Nur leider klappts noch nicht ganz mit meinem geänderten code. ich wäre für jeden tipp dankbar! :)

PHP:
<?php
$id = $_GET['id'];
?>

<?php

$mysqlhost="xxx"; // MySQL-Host angeben

$mysqluser="xxx"; // MySQL-User angeben

$mysqlpwd="xxx"; // Passwort angeben

$mysqldb="xxx"; // Gewuenschte Datenbank angeben



$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die

("Verbindungsversuch fehlgeschlagen");



mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

?>


<?php

    $query= mysql_query("SELECT * FROM 'tabelle' WHERE id={$id}")or die(mysql_error());

    while($row = mysql_fetch_object($query)){
      {
     echo 'Spalte1: <input type="text" value="'.$row->Spalte1.'" name=Spalte1" /><br />';


if(isset($_POST["speichern"])){

    $Spalte1= $_POST["Spalte1"];

    $eintrag = "UPDATE 'tabelle' SET Spalte1='{$Spalte1}' WHERE id={$id}";
echo $eintrag; die();
    mysql_query($eintrag);
  }

  ?>
 
Einfacher Fehler. Du hast den Tabellennamen in ' gesetzt, wobei man hier entweder keine Zeichen oder ` verwenden muss!

PHP:
$query= mysql_query("SELECT * FROM `tabelle` WHERE id={$id}")or die(mysql_error());

Dann seh ich da noch ein Chaos bei der while-Schleife, unter anderem zweifache geschwungene Klammer am Anfang, jedoch keine am Ende.

Unten beim SQL-Query wieder derselbe Fehler wie oben, ` statt ' verwenden!
' verwendet man nur bei Values!
 
Hallo Lime :)

vielen Dank für deine Hilfe! Ich habe den Code entsprechend angepasst und ` statt ' verwendet. Darüber hinaus habe ich auch die doppelte geschwungene klammer am anfang der while-schleife entfernt und am ende eine hinzugefügt.

Ist der Code soweit ok?

Nun fehlt mir nur noch das tatsächliche abspeichern des feldes in der db. was muss ich hier noch ergänzen?

Danke für deine Hilfe!

PHP:
<?php 
$id = $_GET['id']; 
?> 

<?php 

$mysqlhost="xxx"; // MySQL-Host angeben 

$mysqluser="xxx"; // MySQL-User angeben 

$mysqlpwd="xxx"; // Passwort angeben 

$mysqldb="xxx"; // Gewuenschte Datenbank angeben 



$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die 

("Verbindungsversuch fehlgeschlagen"); 



mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen."); 

?> 


<?php 

    $query= mysql_query("SELECT * FROM `tabelle` WHERE id={$id}")or die(mysql_error());

    while($row = mysql_fetch_object($query)){ 
    
     echo 'Spalte1: <input type="text" value="'.$row->Spalte1.'" name=Spalte1" /><br />'; 


if(isset($_POST["speichern"])){ 

    $Spalte1= $_POST["Spalte1"]; 

    $eintrag = "UPDATE `tabelle` SET Spalte1='{$Spalte1}' WHERE id={$id}"; 
echo $eintrag; die(); 
    mysql_query($eintrag); 
  } 

  ?>

<?php } ?>
 
Also so wie ich das sehe hast du da eh einen Hund drinnen. Das kann so glaub ich gar nicht funktionieren, bzw. du musst den einen Teil nicht in die while-Schleife schreiben!

Probiers mal so:

PHP:
<?php  
$mysqlhost="xxx"; // MySQL-Host angeben  
$mysqluser="xxx"; // MySQL-User angeben  
$mysqlpwd="xxx"; // Passwort angeben  
$mysqldb="xxx"; // Gewuenschte Datenbank angeben  

$connection = mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen.");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen."); 

if(isset($_POST["speichern"]))
{
    $Spalte1= $_POST["Spalte1"];
    $id = $_POST['id'];
    $eintrag = "UPDATE `tabelle` SET Spalte1='{$Spalte1}' WHERE id={$id}";  
    mysql_query($eintrag) or die("Änderung fehlgeschlagen.");
} else {
    $id = $_GET['id'];  //sollte später allerdings noch irgendwie gesichert werden, bevor man auf die DB zugreift. Stichwort SQL-Injection!
}

$query = mysql_query("SELECT * FROM `tabelle` WHERE id={$id}") or die(mysql_error()); 
while($row = mysql_fetch_object($query))
{  
    echo '<form method="post" action="diesedatei.php">';
        echo 'Spalte1: <input type="text" value="'.$row->Spalte1.'" name=Spalte1" /><br />';
        echo '<input type="hidden" name="id" value="'.$id.'" />';
        echo '<input type="submit" value="Änderungen speichern" name="speichern" />';
    echo '</form>';
}
mysql_close($connection);
?>

Ich hoff ich hab nichts übersehen oder so... :)
 

Neue Beiträge

Zurück