problem mit \'UPDATE\'
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
anfrage
argument
band
button
code
email
ergebnis
fehler
fehlermeldung
fehlgeschlagen code
funktion
not
probier
set
spalte
update
verbindung
vorschau
zeichen
-
naja ich wollte wissen warum das ganze nicht geht.
<?php $ID = $_GET[\'ID\']; $sid = $_GET[\'sid\']; $bid = $_GET[\'bid\']; $name = $_SESSION[\"username\"]; $verbindung = mysql_connect (\"mysql.lima-city.de\", \"#########\", \"********\") or die (\"keine Verbindung möglich. Benutzername oder Passwort sind falsch\"); mysql_select_db(\"dbf110501o2\") or die (\"Die Datenbank existiert nicht.\"); if ( $ID == \'privat\' and $sid == \'mail\' and $bid == \'start\') { $abfrage = \" SELECT email FROM bands WHERE name LIKE \".$name; $ergebins = mysql_query($abfrage) or die($abfrage. \" <br> \".mysql_error()); $row = mysql_fetch_object($ergebnis) or die($abfrage. \" <br> \".mysql_error()); echo \" Deine alte E-Mail : $row->email\"; ?><br><form action=\"?ID=privat?sid=mail&bid=change\" method=\"POST\"> Deine neue E-Mail: <input type\"text\" name=\"mail\"><br> <input type=\"submit\" name\"Ändern\" value\"Ändern\"></form><? } if ( $ID == \'privat\' and $sid == \'mail\' and $bid == \'change\') { $aendern = \"UPDATE email Set email = \".$_POST[\'mail\'].\" WHERE name LIKE \".$name; $update = mysql_query($aendern); $row = mysql_fetch_object($update); if ( $update == True ) { echo \" Deine Neue Mail lautet: $row->email\"; } else { echo \'Update Fehlgeschlagen\'; } } ?>
naja als Fehlermeldung kommt dann das raus:
SELECT email FROM bands WHERE name LIKE Vorschau
Unknown column \'Vorschau\' in \'where clause\'
allerdings gibt es in der tabelle eine spalte mit name=Vorschau
ach ja das ganze soll hinterher das Feld email aktualiesieren.
und wenn ihr mir sagen könntet was an dem button falsch ist währe mir auch geholfen
<input type=\"submit\" name\"Ändern\" value\"Ändern\">
mfg andre -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hast du schonmal mit echo die anfrage ausgegeben um zu sehen ob dort vielleicht schon der fehler liegt?
und bei dem button heißt es name=\"name\" und value=\"value\" also die =\'s fehlen. -
wenn ich den teil weglasse wo steht or die ($anfrage. \'<br>\' .mysql_error);
kommt immer als fehlermeldung:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/webpages/lima-city/andre-morillon/html/change/mail.php on line 19
aber damit kann ich auch nicht wirklich viel anfangen -
das heißt einfach nur dass er das ergebnis nicht verarbeiten kann, weil irgendwas damit nicht stimmt (zB leeres ergebnis)
und da du denk ich mal mit deiner abfrage auch mehrere werte zurückbekommst würde ich sagen musst du mysql_fetch_array nehmen.
ich poste dir hier mal meine standard-select funktion vielleicht hilft die dir weiter:
function send_select($table, $attributes, $where) { // -> db_status.php db_open(); if($where == \"\") { // not using where $anfrage = \"SELECT $attributes FROM $table;\"; } else { // using where $anfrage = \"SELECT $attributes FROM $table WHERE $where;\"; } if(!($ergebnis = mysql_query(\"$anfrage\"))) { // not able to receive a result // -> error_handle.php error_handle(8); } // -> db_status.php db_close(); return $ergebnis; }
die parameter müssen bis auf das \"where\" immer angegeben werden, wenn man das \"where\" weglässt bekommt man alle werte. -
genau lesen zahlt sich aus ...
$ergebins = mysql_query($abfrage)
or die($abfrage. \" <br> \".mysql_error());
da heist die Variable $ergeBINs
$row = mysql_fetch_object($ergebnis)
hier heist die variable auf einmal $ergeBNIs
ergo: schreibtfehler
-
äh naja nein ich bin zu blöd sorry
was ist mit dbstatus.php
und was ist mit error_handling.php??? -
deswegen ne zentrale funktion, da brauchst du nich jedesmal prüfen obs geklappt hat und vertippen kannst du diach auch nur einmal
[edit]
die beiden php\'s sind andere dateien die ich geschrieben hab
die db_status.php enthält die funktionen zum öffnen und schließen der db
und error_handle.php is einfach nur eine funktion der ich immer error-codes gebe und die das programm dann mit ner fehlermeldung abbricht.
[/edit]
Beitrag geändert: 31.7.2008 12:33:42 von jay0ne -
Probier mal das:
$abfrage = \"UPDATE email Set email = \".$_POST[\'mail\'].\" WHERE name LIKE \'\".$name.\"\'\";
Du hast die Anführungszeichen nciht angegeben, deswegen wird Vorschau als Spalte angesehen, die es nciht gibt.
\'Vorschau\' wird als Zeichenfolge angesehen.
Hoffe ich konnte dir helft.
ps: du musst nciht \"if ( $update == True )\" schrieben, schreib einfach \"if($update)\"
-
dragon12 schrieb:
Probier mal das:
$abfrage = \\\'UPDATE email Set email = \\\'.$_POST[\\\'mail\\\'].\\\' WHERE name LIKE \\\'\\\'.$name.\\\'\\\'\\\';
Du hast die Anführungszeichen nciht angegeben, deswegen wird Vorschau als Spalte angesehen, die es nciht gibt.
\\\'Vorschau\\\' wird als Zeichenfolge angesehen.
Hoffe ich konnte dir helft.
ne geht leider auch nicht...
$abfrage = \" SELECT email FROM bands WHERE name LIKE \'\".$name.\"\'\" or die($abfrage. \" <br> \".mysql_error()); $ergebins = mysql_query($abfrage) or die($abfrage. \" <br> \".mysql_error()); $row = mysql_fetch_object($ergebnis) or die($abfrage. \" <br> \".mysql_error());
jetzt is der fehler immer noch in der zeile 57 also $row =...
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/webpages/lima-city/andre-morillon/html/change/mail.php on line 57
SELECT email FROM bands WHERE name LIKE \'Vorschau\'
mfg andre -
Was ich immer mache, bevor ich das ergebnis bei mysql_fetch_object/array/whtever hernehme ist zu überprüfen, ob das Ergebnis leer ist.
Das istz denke ich hier der Fall, weil es ja bei der Abfrage anscheinend keinen Fehler mehr gibt, oder?
Probier mal das:
$ergebins = mysql_query($abfrage) or die($abfrage. \" <br> \".mysql_error()); if (mysql_num_rows($ergebnis) != 0) { $row = mysql_fetch_object($ergebnis) or die($abfrage. \" <br> \".mysql_error()); } else { //Leeres Ergebnis (keine Übereinstimmungen) }
-
naja geht auch nicht und ich stell beim eintragen sicher dass das feld gefüllt wird ...
jetzt meckert er an dem befehl mysql_num_rows($ergebnis) rum das
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result...
kommt raus -
Ok, dann ist die Ergebnis Kennung anscheinend doch falsch --> Die Abfrage passt nicht.
Also müsste doch jetzt eigentlich wieder der mysql_error() ausgegeben werden, oder?
Wenn ja, was sagt er? -
hier einmal der screenshot:
http://andre-morillon.lima-city.de/change/Unbenannt.jpg
und hier der code allerdings mit allen notizen sprich auch noch der funktion.
<?php $name = $_SESSION[\"username\"]; $verbindung = mysql_connect (\"mysql.lima-city.de\", \"*********\", \"**********\") or die (\"keine Verbindung möglich. Benutzername oder Passwort sind falsch\"); mysql_select_db(\"dbf110501o2\") or die (\"Die Datenbank existiert nicht.\"); if ( $ID == \'privat\' and $sid == \'mail\' and $bid == \'start\') { /*$table = \'bands\'; $attributes = \'email\'; $where = \"name LIKE \".$name; function send_select($table, $attributes, $where) { // -> db_status.php db_open(\"dbf110501o2\"); if($where == \"\") { // not using where $anfrage = \"SELECT $attributes FROM $table;\"; } else { // using where $anfrage = \"SELECT $attributes FROM $table WHERE $where;\"; } if(!($ergebnis = mysql_query(\"$anfrage\"))) { // not able to receive a result // -> error_handle.php error_handle(8); } // -> db_status.php db_close(); return $ergebnis; } echo \'Deine alte E-Mail: \'; echo $ergebnis;*/ $abfrage = \" SELECT email FROM bands WHERE name LIKE \'\".$name.\"\'\" or die($abfrage. \" <br> \".mysql_error()); $ergebins = mysql_query($abfrage) or die($abfrage. \" <br> \".mysql_error()); if (mysql_num_rows($ergebnis) != 0) { $row = mysql_fetch_object($ergebnis) or die($abfrage. \" <br> \".mysql_error()); } else { echo \' du hast noch keine mail angegeben.\'; //Leeres Ergebnis (keine Übereinstimmungen) } /* $ergebins = mysql_query($abfrage) or die($abfrage. \" <br> \".mysql_error()); $row = mysql_fetch_object($ergebnis) or die($abfrage. \" <br> \".mysql_error());*/ echo \" Deine alte E-Mail : $row->email\"; ?><br><form action=\"?ID=privat?sid=mail&bid=change\" method=\"POST\"> Deine neue E-Mail: <input type\"text\" name=\"mail\"><br> <input type=\"submit\" name=\"Ändern\" value=\"Ändern\"></form><? } if ( $ID == \'privat\' and $sid == \'mail\' and $bid == \'change\') { $aendern =\"UPDATE email Set email = \".$_POST[\'mail\'].\" WHERE name LIKE \'\".$name.\"\'\"; $update = mysql_query($aendern); $row = mysql_fetch_object($update); if ( $update == True ) { echo \" Deine Neue Mail lautet: $row->email\"; } else { echo \'Update Fehlgeschlagen\'; } } ?>
und ausgabe
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/webpages/lima-city/andre-morillon/html/change/mail.php on line 51
aber nicht mehr
Beitrag geändert: 31.7.2008 13:19:09 von andre-morillon -
gibt mal nachdem du $abfrage definiert hast echo $abfrage; ein und für das was ausgegeben wird in phpmyadmin aus, und schau was da kommt.
-
also ich hab das mal bei mir reingehackt und folgende variante funzt:
<?php include (\"db_status.php\"); // fuers db_open() error_reporting(E_ALL); db_open(); // oeffnet die db $name = \"asd\"; // den muss es geben! $abfrage = \"SELECT name FROM user WHERE name LIKE \\\"$name\\\"\"; echo \"\".$abfrage.\"<br>\"; if(!($ergebnis = mysql_query(\"$abfrage\"))) { echo \"fehler\" . mysql_error().\"<br>\"; } $row = mysql_fetch_array($ergebnis); echo \"\".$row[\'name\']; db_close(); ?>
[edit]
achso und die spalten- und tabellennamen musst du natürlich anpassen
[/edit]
Beitrag geändert: 31.7.2008 13:33:34 von jay0ne -
$abfrage = \"SELECT name FROM user WHERE name LIKE \\\"$name\\\"\";
fehlen da nicht die stingadditions-punkte? Und warum nimmst du die escapten doppelten anführungsstriche anstatt der unescapeten einfachen her?
Und müsste man nicht den String beenden bevor man die Variable dazuaddieren kann?
-
nein hier nich, die escapes funktionieren da super und als anfrage steht ja dann auch da:
SELECT name FROM user WHERE name LIKE \"asd\"
wenn du die variable mit punkten ranhängst müsstest du schreiben:
$abfrage = \"SELECT name FROM user WHERE name LIKE \\\"\".$name.\"\\\"\";
aber das sieht ja mal irgendwie doof aus. -
tja dann kommt das Fatal error: Call to undefined function db_open() in /home/webpages/lima-city/andre-morillon/html/change/mail.php on line 5 was muss ich machen damit das geht???
-
>.<
das is doch meine funktion aus der anderen datei (steht auch in den kommentaren btw.)
ersetz den funktionsaufruf (und db_close() auch) mit deinem code für das öffnen der db. -
jetzt funzt alle sbis aufs ersetzen
da bleibt der bildschirm einfach leer
Beitrag geändert: 31.7.2008 15:14:24 von andre-morillon -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage