Update von Datensätzen

Update von Datensätzen

am 24.09.2006 18:26:20 von Sebastian Deiszner

Hallo,

ich versuche mit

mysql_query("UPDATE eigene_presse SET inhalt = '$inhalt' WHERE id = '$id'");

nach dem connecten zu einer Datenbank einen Datensatz zu aktualisieren.

Ich lasse zur Kontrolle die Daten noch mit echo $inhalt und echo $id ausgeben - damit ich kontrollieren kann, ob die Daten richtig im Formular übergeben worden sind.

Aber trotz richtiger Übergabe ändern sich die Einträge nicht.

Vorschläge?

Gruß

Sebastian

Re: Update von Datensätzen

am 24.09.2006 18:54:10 von Nico Haase

Hallöchen,
*deiszner@web.de* schrub:
> ich versuche mit
>
> mysql_query("UPDATE eigene_presse SET inhalt = '$inhalt' WHERE id =
> '$id'");
>
> nach dem connecten zu einer Datenbank einen Datensatz zu
> aktualisieren.
>
> Ich lasse zur Kontrolle die Daten noch mit echo $inhalt und echo $id
> ausgeben - damit ich kontrollieren kann, ob die Daten richtig im
> Formular übergeben worden sind.
>
> Aber trotz richtiger Übergabe ändern sich die Einträge nicht.

Lass dir den fertigen Query doch erstmal ausgeben, vielleicht siehst
du den Fehler schon. Zum zweiten solltest du Texteingaben per
mysql_escape_string so escapen, dass keine Injections möglich sind.
Drittens: Ist die ID eine numerische ID, so reicht WHERE id = $id aus.
Und zu guter letzt existiert mysql_error(), was dir eine mögliche
Fehlermeldung von Seiten des MySQL-Servers ausgibt.
mfg
Nico

--
www.buchtips.net - Rezensionen online

Re: Update von Datensätzen

am 24.09.2006 20:47:13 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Update von Datensätzen

am 24.09.2006 21:13:49 von Sebastian Deiszner

"Nico Haase" schrieb im Newsbeitrag news:240906.dcdm.34.dlg@news.nicohaase.de...
> Und zu guter letzt existiert mysql_error(), was dir eine mögliche
> Fehlermeldung von Seiten des MySQL-Servers ausgibt.

Einige Einträge funktionieren - andere nicht, z.B. kommt als Errormeldung:

1064: 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 'n Ostseesand jesetzt. Ich jlowe den jeetz awwer jar nich ums Ja


Der Text lautet:

Jezz hat der Schröder mit de Putin sojar eene Erdjasleilung in'n Ostseesand jesetzt. Ich jlowe den jeetz awwer jar nich ums Jas,
sonnern um de Kohle", interpretierte die Putze in die Worte des Klerus.


Bislang habe ich nie solche Probleme bemerkt - ich dachte immer was im String drin ist, ist drin.

Re: Update von Datensätzen

am 24.09.2006 21:30:13 von Sebastian Wessel

Sebastian Deiszner schrieb:
> "Nico Haase" schrieb im Newsbeitrag
> news:240906.dcdm.34.dlg@news.nicohaase.de...
>> Und zu guter letzt existiert mysql_error(), was dir eine mögliche
>> Fehlermeldung von Seiten des MySQL-Servers ausgibt.
>
> Einige Einträge funktionieren - andere nicht, z.B. kommt als Errormeldung:
>
> 1064: 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 'n Ostseesand jesetzt. Ich jlowe den jeetz awwer jar nich ums Ja
>
>
> Der Text lautet:
>
> Jezz hat der Schröder mit de Putin sojar eene Erdjasleilung in'n
> Ostseesand jesetzt. Ich jlowe den jeetz awwer jar nich ums Jas, sonnern
> um de Kohle", interpretierte die Putze in die Worte des Klerus.
>
>
> Bislang habe ich nie solche Probleme bemerkt - ich dachte immer was im
> String drin ist, ist drin.

Ja, wenn du mal schaust was da alles im Text drin ist, dann wirst du
dich wundern:
Da sind so seltsame Sachen drin wie " und '.

Jetzt versetze dich mal in die Lage von $Programmiersprache, baue deinen
String zusammen und übergebe den an MySQL. Versetze dich nun in die Lage
von MySQL und beantworte mir folgende Frage: Wo fängt der String an und
wo hört er auf? Und was ist das da zwischendrin?

--
MfG Sebastian Wessel

"Wer Dich wegen deines Hemdes verprügelt ist nicht dein Freund."
(March Simpson)

Re: Update von Datensätzen

am 24.09.2006 21:39:36 von Sebastian Deiszner

"Sebastian Wessel" schrieb im Newsbeitrag news:ef6mc5$nqm$1@online.de...
> Sebastian Deiszner schrieb:
>> "Nico Haase" schrieb im Newsbeitrag news:240906.dcdm.34.dlg@news.nicohaase.de...
>>> Und zu guter letzt existiert mysql_error(), was dir eine mögliche
>>> Fehlermeldung von Seiten des MySQL-Servers ausgibt.
>>
>> Einige Einträge funktionieren - andere nicht, z.B. kommt als Errormeldung:
>>
>> 1064: 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 'n Ostseesand jesetzt. Ich jlowe den jeetz awwer jar nich ums Ja
>>
>>
>> Der Text lautet:
>>
>> Jezz hat der Schröder mit de Putin sojar eene Erdjasleilung in'n Ostseesand jesetzt. Ich jlowe den jeetz awwer jar nich ums Jas,
>> sonnern um de Kohle", interpretierte die Putze in die Worte des Klerus.
>>
>>
>> Bislang habe ich nie solche Probleme bemerkt - ich dachte immer was im String drin ist, ist drin.
>
> Ja, wenn du mal schaust was da alles im Text drin ist, dann wirst du dich wundern:
> Da sind so seltsame Sachen drin wie " und '.
>
> Jetzt versetze dich mal in die Lage von $Programmiersprache, baue deinen String zusammen und übergebe den an MySQL. Versetze dich
> nun in die Lage von MySQL und beantworte mir folgende Frage: Wo fängt der String an und wo hört er auf? Und was ist das da
> zwischendrin?

Gibst Du mir einen Tipp, in was ich " und ' ersetzen muss, um bei echo $string; die Zeichen bekommen?

Re: Update von Datensätzen

am 24.09.2006 21:48:31 von Sebastian Wessel

Sebastian Deiszner schrieb:
> Gibst Du mir einen Tipp, in was ich " und ' ersetzen muss, um bei echo
> $string; die Zeichen bekommen?

Da ich mal annehme, dass es um PHP geht:

mysql_query("UPDATE eigene_presse SET inhalt = '".
mysql_real_escape_string($string) ."' WHERE id = '".
mysql_real_escape_string($id) ."'");

(Zeilenumbrüche unnötig)

--
MfG Sebastian Wessel

"Wer Dich wegen deines Hemdes verprügelt ist nicht dein Freund."
(March Simpson)

Re: Update von Datensätzen

am 24.09.2006 22:03:48 von Thomas Rachel

Sebastian Deiszner wrote:

>> Jetzt versetze dich mal in die Lage von $Programmiersprache, baue deinen
>> String zusammen und übergebe den an MySQL. Versetze dich nun in die Lage
>> von MySQL und beantworte mir folgende Frage: Wo fängt der String an und
>> wo hört er auf? Und was ist das da zwischendrin?
>
> Gibst Du mir einen Tipp, in was ich " und ' ersetzen muss, um bei echo
> $string; die Zeichen bekommen?

Die Funktion mysql_real_escape_string() ist Dein Freund.

Sie wandelt Dir Deinen String so um, daß alle für MySQL "gefährlichen"
Zeichen "entschärft" werden (escaped mit einem \ davor). AFAIR sind das das
Nullbyte, der Newline, ", ' und natürlich der \ selbst.


Thomas
--
> Bitte nicht gleich losschimpfen,
Das ist hier auch nicht Sitte. Denn hier ist hamster.all und nicht de.all.
(Maik Bauch und Joern Weber in hamster.de.config; 2000-09-24)

Re: Update von Datensätzen

am 24.09.2006 22:30:58 von Thomas Rachel

Sebastian Wessel wrote:

> Da ich mal annehme, dass es um PHP geht:
>
> mysql_query("UPDATE eigene_presse SET inhalt = '".
> mysql_real_escape_string($string) ."' WHERE id = '".
> mysql_real_escape_string($id) ."'");

Und da ich annehme, daß es sich bei id um ein INTEGER-Feld handelt:

/* hier sicherstellen, daß $id numerisch ist - passende Funktion bitte
selbst nachschlagen, da es hier offtopic ist und ich sie grad nicht
auswendig weiß */
mysql_query("UPDATE eigene_presse SET inhalt = '".
mysql_real_escape_string($string) .
"' WHERE id = ".$id);


Thomas
--
Unter Intuition versteht man die Fähigkeit gewisser Leute,
eine Lage in Sekundenschnelle falsch zu beurteilen.
(Friedrich Dürrenmatt)

Re: Update von Datensätzen

am 25.09.2006 14:53:32 von Sebastian Deiszner

"Thomas Rachel" schrieb im Newsbeitrag news:ef6ob4$iqa$1@glglgl.ath.cx...
> Die Funktion mysql_real_escape_string() ist Dein Freund.
>
> Sie wandelt Dir Deinen String so um, daß alle für MySQL "gefährlichen"
> Zeichen "entschärft" werden (escaped mit einem \ davor). AFAIR sind das das
> Nullbyte, der Newline, ", ' und natürlich der \ selbst.


Das war die Lösung - Danke