PHP Variable übergeben

thesuicid

Newbie
Registriert
März 2011
Beiträge
5
Moin, ich versuche jetzt schon seit Stunden hier eine Variable zu übergeben. Aber so langsam bin ich nervlich am Ende... :(

Hier soll einmal die ID übergeben werden. Sie steht auch in der Variable drin, soweit so gut.
Sie erscheint aber nicht in dem Value-Feld.

PHP:
<?php
$eidi = $HTTP_GET_VARS['id'] ;
$ergebnis = mysql_query("SELECT id FROM topsite where id='$eidi'");
while($row = mysql_fetch_object($ergebnis))
echo $row->id;

//Formular zur Dateneingabe
echo'<h3>Daten eintragen</h3>

<form method="post" action="datenbank01.php">
  Vorname: <input type="text" name="vorname" size="30"><br>
  Comment: <input type="text" name="comment" size="30"><br>
  Email: <input type="text" name="email2" size="30"><br>
  ID: <input type="text" name="id" value="'.$row->id.'"><br>

  <input type="submit" value="Eintragen!">
</form>';

?>

Und hier wird bei:

PHP:
WHERE id = ".$_POST["id"]." ") or die (mysql_error());

die Variable nur angenommen, wenn ich sie von Hand in das Textfeld schreibe, allerdings kommt immer folgende Fehlerausgabe:

PHP:
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 'WHERE id = 1' at line 1


PHP:
<?php
//Variablen zuweisen
$vorname = $_POST["vorname"];
$comment = $_POST["comment"];
$email2 = $_POST["email2"];
$id = $_POST["id"];

if (($vorname == "") OR ($comment == "") OR($email2 == "")) {
        echo "Fehler: Eintrag unvollständig.";

        die; 
}

//Daten in DB speichern
$sql_befehl = mysql_query("INSERT INTO topsite (vorname,comment,email2)  VALUES ('".$_POST['vorname']."','".$_POST['comment']."','".$_POST['email2']."') WHERE id = ".$_POST["id"]." ") or die (mysql_error());


if($sql_befehl)
{ echo "Ihr Eintrag wurde hinzugefügt."; }

//Verbindung beenden
mysql_close($datenbank); 
?>
 
oder
{$eidi}

PHP:
$eidi = mysql_escape_string($_GET['id']);
$ergebnis = mysql_query("SELECT id FROM topsite where id='{$eidi}'");
 
Zuletzt bearbeitet:
Zudem achte auch gleich von Anfang an auf die Sicherheit. Nimm NIE externe Eingaben einfach so an. Wandel also oben die ID bitte vorher in ein int (einfach über $eidi = (int)$_GET['id'];), damit schließt du von vorn herein schon aus, dass dir ein SQL-Inject untergejubelt werden kann.
 
Ok, danke euch, die Übergabe funzt soweit, um die Sicherheitsaspekte kümmer ich mich wenn alles läuft. Ein Problem besteht noch bei den Variablen-Begrenzern oder wie die heissen...

PHP:
//Daten in DB speichern
$sql_befehl = mysql_query("INSERT INTO topsite (vorname,comment,email2)  VALUES ('".$_POST['vorname']."','".$_POST['comment']."','".$_POST['email2']."') WHERE id = ".$id." ") or die (mysql_error());

Spuckt folgendes aus:

PHP:
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 'WHERE id = 2' at line 1
 
Naja, ich hab mehrere Einträge in der Datenbank, also ich will damit quasi Datensätze zum jeweiligen Eintrag mit der jeweiligen ID hinzufügen.
 
Ja aber die Felder gibts ja schon und wieso dann nicht nen update?
 
Ja ok, ein Update solls eigentlich auch werden, aber ich krieg ja nichtmal diese Fehlermeldung weg, egal wie ich den WHERE-Part ändere.

Mit UPDATE statt INSERT bekomme ich:

PHP:
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 'INTO topsite (vorname,comment,email2) VALUES ('dfg','dfg','dsfg') WHERE id = 1' at line 1
 
Zuletzt bearbeitet:
Also so ganz spontan würd ichs jetzt so versuchen..Ist natürlich nicht getestet..
Achja und wegen Variablen sicherheit musst dann natürlich auch selber machen soll nur mal mein ansatz sein.

PHP:
$vorname = $_POST['vorname'];
$comment = $_POST['comment'];
$email2 = $_POST['email2'];



$sql = "UPDATE topsite SET vorname = '{$vorname}', comment= '{$comment}', email2 = '{$email2}' WHERE id = '{$id}' ";  

$result = mysql_query($sql) or die (mysql_error());
 
Zuletzt bearbeitet:
Ah ok danke euch hatt geklappt :-)
War schon kurz vorm heulen :D

Edit: Hm, ich dachte der erweiter die Daten statt sie auszutauschen. Das soll sowas wie eine Kommentar-Funktion werden...
 
Zuletzt bearbeitet:
Ja aber nen Insert würde das ja auch nur einmal einfügen und nen update, wie der name schon sagt.
 
Hmm.. kannst ja nen SELECT ausführen und prüfen ob der neue wert anders ist als der in der DB...

Dann einfach nur eine Spalte selektieren bzw die, die anders sind und nen Update durchführen....

*edit*

Was meinst Du eigentlich mit erweitern?

Datensatz:

tab | tab1 | tab2 | tab3 | tab4 | id

1 | 1 | 1 | 1 | 1 | 2

Und was willste da erweitern?

Einen neuen Datensatz zu id = 2 hinzufügen oder den vorhanden Datensatz ändern?

Also nur tab1 oder so`...


Ist vill. auch schon spät :P

Oder
 
Zuletzt bearbeitet:
Zurück
Oben