update klappt nicht.
nick
- datenbank
Hallo,
ich möchte eine Bestätigung in eine bestehene Tabelle eintragen lassen.
$vier = mysql_query("update unternehmen set double='ja' where id ='".$_GET['value']."'");
Leider klappt es so nicht, eine Fehlermeldung gibt es nicht.
mbg nick
Leider klappt es so nicht, eine Fehlermeldung gibt es nicht.
Fragst Du die Fehlermeldung denn ab?
hallo,
Fragst Du die Fehlermeldung denn ab?
nein, wie geht das?
mbg nick
Hi!
Fragst Du die Fehlermeldung denn ab?
nein, wie geht das?
Das sollte eigentlich in jedem Tutorial gelehrt werden. Die MySQL-Funktionen geben fast alle ein false zurück, wenn MySQL einen Fehler zu melden hat. Der Wortlaut des Fehlers kann mit der Funktion mysql_error() abgefragt werden.
Fehler treten nicht nur dann auf, wenn - wie bei dir - ein Syntax-Fehler vorliegt, sondern auch dann, wenn der MySQL-Server unverhofft streikt. Alle Funktionsergebnisse auszuwerten und den Programmablauf daraufhin angemessen zu beeinflussen, gehört zu einer robusten Programmierung. Ebenso gehört dazu, Kontextwechsel zu beachten.
Dein eigentlicher Fehler ist - das wird dir auch mysql_error() auf seine Weise sagen - dass du das Schlüsselwort double als Spaltenname verwendet hast. Das ist möglich, double
muss jedoch dann immer in Backticks notiert werden. Alternativ kannst du auch die Spalte umbenennen.
Lo!
HI,
Dein eigentlicher Fehler ist - das wird dir auch mysql_error() auf seine Weise sagen - dass du das Schlüsselwort double als Spaltenname verwendet hast. Das ist möglich,
double
muss jedoch dann immer in Backticks notiert werden. Alternativ kannst du auch die Spalte umbenennen.
Der Spaltenname heißt jetzt wieder anders, aber es klappt immer noch nicht.
$vier = mysql_query("update unternehmen set optin = 'jaa' where 'id' =".$_GET['value']);
echo mysql_error($vier);
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /mnt/web7/42/28/51732228/htdocs/moreface/angemeldet.php on line 22
mbg nick
Lo!
Hi!
Der Spaltenname heißt jetzt wieder anders, aber es klappt immer noch nicht.
"Klappt nicht" klappt nicht als Fehlerbeschreibung. Was genau ist nun das Fehlerbild? Nachfolgende Meldung bekommst du auch im Gut-Fall, weil du mysql_error() etwas falsches übergibst. Solange nur eine Datenbankverbindung verwendet wird, kann man mysql_error() ohne Parameter aufrufen.
$vier = mysql_query("update unternehmen set optin = 'jaa' where 'id' =".$_GET['value']);
echo mysql_error($vier);
Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /mnt/web7/42/28/51732228/htdocs/moreface/angemeldet.php on line 22
Schau bitte im PHP-Handbuch nach, was mysql_error() erwartet und was mysql_query() liefern kann.
mysql_error() erwartet als optionalen Parameter die Verbindungs-Ressource und weder eine Ergebnismengen-Ressource (bei SELECT), noch ein Fehlerfall-false und auch kein true für erfolgreiche, ergebnismengenlose Statements.
Lo!
Hi,
$vier = mysql_query("update unternehmen set optin = 'jaa' where 'id' =".$_GET['value']);
Du verwendest hier ungeprüft eine User-Eingabe im Datenbank-Statement. Das kann gefährlich sein - mysql_real_escape_string könnte nützlich sein.
Außerdem vergleichst Du diese User-Eingabe mit dem String 'id'.
Wenn der böse User jetzt "'id'" (also ' und i und d und ') als value-Parameter angibt, ist die Bedingung für alle Datensätze erfüllt, damit werden alle Datensätze geändert.
Willst Du nicht lieber die Spalte id mit dem Parameterwert vergleichen?
cu,
Andreas
Hallo
$vier = mysql_query("update unternehmen set optin = 'jaa' where 'id' =".$_GET['value']);
Du verwendest hier ungeprüft eine User-Eingabe im Datenbank-Statement. Das kann gefährlich sein - mysql_real_escape_string könnte nützlich sein.
Wenn dort, was nicht unwahrscheinlich ist, eine Zahl (Integer) erwartet wird, würde intval
anstatt mysql_real_escape_string
die passende Funktion sein.
Tschö, Auge