kostenloser Webspace werbefrei: lima-city


problem mit \'UPDATE\'

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    a************n



    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. Autor dieses Themas

    a************n

    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
  5. 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.
  6. b****r

    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
  7. Autor dieses Themas

    a************n

    äh naja nein ich bin zu blöd sorry
    was ist mit dbstatus.php
    und was ist mit error_handling.php???
  8. 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
  9. 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)\"
  10. Autor dieses Themas

    a************n



    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
  11. 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)
    }
  12. Autor dieses Themas

    a************n

    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
  13. 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?
  14. Autor dieses Themas

    a************n

    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
  15. 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.
  16. 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

  17. $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?
  18. 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.
  19. Autor dieses Themas

    a************n

    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???
  20. >.<

    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.
  21. Autor dieses Themas

    a************n

    jetzt funzt alle sbis aufs ersetzen
    da bleibt der bildschirm einfach leer


    Beitrag geändert: 31.7.2008 15:14:24 von andre-morillon
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!