[PHP/MySQL] Fehler - aber wo? Daten in mySQL eintragen

concept

Member
ID: 11843
L
21 Februar 2007
12
1
Hallo!
Habe ein kleines Problem - kenne mich auch nicht sonderlich gut aus.
Also wenn ich dieses Script ausführe bekomme ich immer die Meldung
- Der Datensatz wurde nicht geändert -

Kann mir jemand von euch weiterhelfen??

Vielen Dank schon mal.
Andy





PHP:
<?php
include("config.php");


$db = mysql_connect($dbhost, $dbuser, $dbpass);
if(!$db) {echo "Der DB Server ist im Moment leider nicht erreichbar!";}

echo "Verbindung hergestellt.<br><br>";

echo "<b>Auslesen der Datenbank</b><br><br>";
 

   $res = mysql_db_query("saskia", "select * from rasse");
   $num = mysql_num_rows($res);
   
   for ($i=0; $i<$num; $i++)
{  $nn = mysql_result($res, $i , "text");
   echo "$nn <br><br>";


}

   echo "<b>Ende Auslesen der Datenbank</b><br><br>";

   $altnn = mysql_result($res, 0, "text");

   echo "Führen Sie die Änderungen durch,<p>";
   echo "betätigen Sie anschließend den Button<p>";

   echo "<center><form action = 'rasse_geaendert.php' ";
   echo " method = 'post'>";

   echo "<br>
   
   <textarea name='neunn' rows='20' cols='90'>$nn</textarea><p>";
   
   

   echo "<input type='submit' ";
   echo " value='Änderungen in DB speichern'><p>";
   echo "<input type='reset'>";
   echo "</form></center>";

   mysql_close($db);



?>

hier Teil 2 des Scriptes

PHP:
<html>
<body>
<?php
    include("config.php");
    
   $db = mysql_connect($dbhost, $dbuser, $dbpass);
if(!$db) {echo "Der DB Server ist im Moment leider nicht erreichbar!";}

echo "Verbindung hergestellt.<br><br>";

   $sqlab = "update rasse set text = '$neunn',";
   

   mysql_db_query("saskia", $sqlab);

   $num = mysql_affected_rows();
   if ($num>0)
      echo "Der Datensatz wurde geändert<p>";
   else
      echo "Der Datensatz wurde nicht geändert<p>";

   mysql_close($db);
?>
Zurück zur <a href="rasse_aendern.php">Auswahl</a>

</body>
</html>
 
Mach mal im zweiten SKript in Zeile 11 das Komma am Ende des Querys weg. Da wartet MySQL sonst drauf, dass da noch was kommt...

BTW: mysql_error() ist reichlich hilfreich. ;)
 
also wenn ich das "," rausnehme sagt er zwar
- Datensatz wurde geändert -
aber unterm strich löscht bzw. trägt er in die db nichts ein, es wird ein leeres feld (vorher war was drinne danach ist es leer)8O


oder aber vielleicht anders:

was ich vorhabe:
ich möchte aus der db, eine tabelle mit nur einem feld, die daten in eine textarea auslesen ggf ändern und wieder speichern.


vielleicht ist das ja auch anders (besser) zu lösen ...
 
Zuletzt bearbeitet:
Woher soll denn der Wert $neunn kommen ? Ich sehe ihn nirgends definiert.
Evtl. ein Fall von register_globals :roll:
Außerdem is 'text' ein reserviertes Wort, das könnte Probleme machen. Probier das:
PHP:
$sqlab = "UPDATE rasse SET `text` = '".$_POST['neunn']."'";
Zur Info: ein UPDATE-Statement löscht nichts und fügt nichts ein, sondern ändert nur Datensätze.
Wenn mysql_affected_rows() sagt, es wurde was geändert, dann wurde es auch.
 
hey SUPER!

genau das war der fehler - genauss soll es sein damit es funktioniert.

ich danke dir vielmals für die schnelle hilfe. :kiss
 
Zusatz:

Das Script ist zurzeit nicht vor SQL Injections geschützt, ich würde das Script ein wenig abändern:

PHP:
$sqlab = "UPDATE rasse SET `text` = '".mysql_real_escape_string($_POST['neunn'])."'";

Dann brauchst du auch keine Angst vor Injections haben :)