Seite 1 von 2
Frage: Eintrag in die Datenbank per PHP
Verfasst: 19.02.2010 12:52
von TW1920
Hallo,
ich habe ein problem mit php. ich weiß nicht wie man daten von einer variable in eine datenbank speichert. ich weiß wie man eine db-verbindung herstellt und wie man normal daten speichert. allerdings muss ich über einen variablenwert eine gewisse zeile aktualisieren.
Code: Alles auswählen
$sql = "UPDATE *entfernt*_topics
SET feed = $feed,
WHERE topic_id = $topic";
$db->sql_query($sql);
habe das mal so probiert, aberes funktioniert nicht. Ich hoffe mir kann einer helfen
Danke im vorraus
Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 19.02.2010 18:29
von Pyramide
TW1920 hat geschrieben:aberes funktioniert nicht.
Windows startet neu? Der Monitor explodiert? Eine Fehlermeldung wird angezeigt?
KB:programmierfragen
Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 19.02.2010 19:30
von P7BB
guck mal hinter "$feed"... da ist ein komma und ich denke, dort sollte keins sein

Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 19.02.2010 20:10
von TW1920
Nein , leider hat das nix geholfen.
Code: Alles auswählen
$db->sql_transaction('begin');
$sql = "UPDATE twc_de_topics
SET star = $star
WHERE topic_id = " $topic;
$db->sql_query($sql);
$sql = "UPDATE twc_de_topics
SET feed = $feed
WHERE topic_id = " $topic;
$db->sql_query($sql);
$db->sql_transaction('commit');
In derZeile vom oberen Topic ist Zeile 62:
Code: Alles auswählen
Parse error: syntax error, unexpected T_VARIABLE in /var/www/vhosts/twcmail.de/httpdocs/de/star.php on line 62
Ich weiß nicht warum der fehlerda ist.
wenn ich
Code: Alles auswählen
$db->sql_transaction('begin');
$sql = "UPDATE twc_de_topics
SET star = $star
WHERE topic_id = $topic ";
$db->sql_query($sql);
$sql = "UPDATE twc_de_topics
SET feed = $feed
WHERE topic_id = $topic ";
$db->sql_query($sql);
$db->sql_transaction('commit');
Dann kommt nur:
SQL ERROR [ mysql4 ]
Unknown column '$topic' in 'where clause' [1054]
An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
Ich hoffe jemand kann damit was anfangen,
danke im vorraus...
Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 19.02.2010 23:08
von gn#36
In der oberen Variante fehlt ein Punkt zwischen " und $topic; Die zweite sieht so aus als würde es eine Variable namens $topic nicht geben...
Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 20.02.2010 10:16
von P7BB
Beim 2. muss es nicht ... = $topic sein, sondern ... = '$topic'

angenommen $topic hätte den wert "bla". Dann würde dort bei der jetzigen Variante stehen:
WHERE ... = bla
Es muss aber dort = 'bla' stehen

Zumindest hatte ich einmal einen ähnlichen Fehler und da lag es tatsächlich an den Anführungsstrichen

Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 20.02.2010 12:13
von TW1920
danke, es funktioniert nun.
Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 20.02.2010 15:15
von gn#36
Naja wenn er mit einem Feld vergleicht in dem eine Zahl steht braucht er die Anführungszeichen eigentlich nicht, denn ob der Wert eine Zahl ist sollte man in jedem Fall vorher prüfen wenn man sowas in ein Query einbaut.
Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 20.02.2010 15:54
von P7BB
ok, man muss es nicht machen, aber ich mach es normalerweise trotzdem immer, weil es eben dann eindeutig ist

Re: Frage: Eintrag in die Datenbank per PHP
Verfasst: 20.02.2010 16:34
von gn#36
Eigentlich nicht. Denn die Anführungszeichen sind für Strings, nicht für Zahlen. Du solltest vorher prüfen ob du eine Zahl einfügst oder nicht, vor allem wenn das Feld eigentlich nur Zahlen akzeptiert. Um Fehler in deinen Programmen zu finden ist es meist besser wenn sie Probleme nicht durch die Verwendung von falschen Datentypen umgehen. Das macht das Verhalten im Fehlerfall dann nämlich abhängig von weiteren Komponenten auf die du möglicherweise keinen Einfluss hast. Vielleicht wird ein String, sollte er in der Variablen stehen, dann in eine 0 umgewandelt? Vielleicht gibt's einen SQL Fehler? Vielleicht gibts auch eine SQL Injection weil du nicht ganz aufgepasst hast um das zu verhindern? Wenn ein Programm falsche Daten bekommt sollte es den Dienst verweigern und nicht versuchen "irgendwas" mit den Daten zu machen.