Mysql ändner funzt net !

  • ICh möchte ein online script basteln mit Hilfe von MySQL dafür habe ich in der Tabelle "user" eine Spalte "on" dieser Wert soll beim login auf 1 gesetzt werden doch mein Script funzt net :

    Code
    $id = $_SESSION["id"];	
    	$abfrage = "SELECT * FROM user WHERE id LIKE '$id'";
    	$ergebnis = mysql_query($abfrage);
    	$row = mysql_fetch_object($ergebnis);
    	$aendern = "UPDATE user Set
    	on='$on' WHERE id = '$id'";
    	$update = mysql_query($aendern);


    Momentan blick ich net merh durch :?
    VVIIIEEEELLLL ZUUU VVIIIEEELLLLEEEE buchstaben und Variablen ^^


    hoffe ihr findet meinen Fehler!


    Es kommt keine Fehlermeldung nur wird der Wert nicht auf 1 Gesetzt !



    MFG

  • Der fehler liegt in deinen variablen....


    wenn du ein ' ' verwendest dann sagst du PHP das es sich im einen STring handelt. Wenn du aber den request einer Variable haben möchtest darfst du kein hochkomme verwenden.

  • Und wo darf ich demnach keines Verwenden ?
    Wenn ich


    Code
    $id = $_SESSION["id"];   
       $abfrage = "SELECT * FROM user WHERE id LIKE '$id'";
       $ergebnis = mysql_query($abfrage);
       $row = mysql_fetch_object($ergebnis);
       $aendern = "UPDATE user Set
       on="$on" WHERE id = '$id'";
       $update = mysql_query($aendern);


    benutze erhalte ich eine Fehlermeldung :

    Zitat

    Parse error: syntax error, unexpected T_VARIABLE in /bla/bla/bla/in.php on line 29

  • Das mit den ' ist schon ok so. mach aber volgendes


    ' ".$id." ' also immer wen du variablen einfügen willst oder variablen abfrägst, sie so einfügen.


    benutzt due mysql_error(); wenn php kein fehler erzeugt, heist das nicht das bei mysql kein fehler ist. Diese muss man aber mit dem oben genannten befehl abfragen.


    Hast alle tabellen und spaltennamen überprüft.



    Gib zum testen des gesendeten query die abfrage aus.


    In dem fall echo $abfrage oder echo $aendern dann kannst sehen was genau in deinem query steht.


    Greetz TimTim

  • Wenn ich es somache und per

    Code
    echo mysql_error();

    den Fehler ausgebe erhalte ich :

    Code
    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 'on='1' WHERE id = '2'' at line 2


    Die id des Accounts mit dem ich mich einlogge ist 2 und er soll den DB eintrag von 0 auf 1 setzen das Feld ist INT 5




    hoffe ihr könnt mir helfen !

  • hier

    Code
    on="$on" WHERE id = '$id'";

    mach da mal die "" bei $on weg und dafür ' '
    also


    Code
    on='$on' WHERE id = '$id'";


    wenn du gut bist, schreibst du es wie timtim es gesagt hat also:

    Code
    on='" . $on . "' WHERE id = '" .  $id . "'";


    dann hast du es schön Übersichtlich und die variablen werden auch mit heileits versehen.


    EDIT: ach jetzt seh ich es erst^^ die variabel $id ist nicht etwa die id, welche du davor aus der Datenbank abfragst oder? wenn ja dann musst du das bei dem zwoten query so schreiben:


    Code
    on='" . $on . "' WHERE id = '" .  $row->id . "'";


    ansonsten gibt er 0 bzw false aus und das kann er in der DB nicht finden und zeigt eine Fehlermeldung.


    EDIT die 2.:^^
    bzw was steht in $_SESSION['id'];?

  • die frage ist ja, wie liest du die ID anhant einer ID aus?


    ich gehe davon aus, dass sich der User erst einloggt. Folglich ist doch die ID leer oder? Wenn das hier aber ein seperates skript ist hab ich nichts gesagt, aber ich würde einfach mal (nur zum Testen) bei dem zweiten query

    Code
    on = '1' WHERE id = '1'


    wenn dann noch ne Fehlermeldung kommt, hast du schonmal eingekreist und dann stimmt wohl was mit den variablen nicht.

  • In dem zusammenhang ist egal ob $id leer ist, wenn es zwischen '' steht. Das würde keinen Fehler zurück geben sondern FALS.


    Gib mal n Mysql Dumb von der tabelle, und de query als echo.


    Trage mal testweise von hand die IDs ein.



    Greetz TimTim

  • so ich hab jetzt :

    Code
    echo "$on | $id"


    eingesetzt und erhalte:

    Code
    1 | 2You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on = 1 WHERE id = 2' at line 2


    "1" ist die feste variable $on und "2" ist die passende $id
    allerdings habe ich mit

    Code
    echo mysql_error();


    wieder die bereits geschreibene Fehermeldung erhalten !
    Ich verstehe die Fehlermeldung nicht ganz an einer anderen Stelle Funktioniert es perfekt mit fast dem gleichen Script !

  • wie gesagt, das $on und $id ist egal.



    den echo vom Query


    also das von $iwas = mysql_query("bla");


    Und hast schon die ganzen tabellen namen überprüft.


    Die fehlermeldung bedeutet, das du in deinem Befehl, einen fehler hast, und in dem ausschnit muss er sein.


    Versuch mal den Query direkt bei phpmyadmin einzugeben, und schau was da kommt.


    Greetz TimTim

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!