kostenloser Webspace werbefrei: lima-city


PHP, MSQL Update + variable

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    nusus

    nusus hat kostenlosen Webspace.

    Hi,
    ich habe ein kleines script was mit dem GET parameter sachen abfragt.
    Jetzt soll per update eine der abgefragten sachen in die mysql-Datenbank, doch der Wert soll plus gerechnet werden!
    Mit einem normalen Wert funktioniert es z.b coins = coins +1. Aber es funktioniert nicht wenn ich die eins durch eine Variable ersetzte.
    Habe im Internet nichts gefunden. :wall:

    if(isset($_GET['postback'])) {
       $offerid = $_GET['offerid'];
       $offername = $_GET['offername'];
       $coins = $_GET['coins'];
       $userid = $_GET['userid'];
        
     
    $statement = $pdo->prepare("INSERT INTO transaction(OID, ONM, CUR, SB1) VALUES (:OID, :ONM, :CUR, :SB1)");
    $statement->execute(array('offerid' => $offerid, 'offername' => $offername, 'coins' => $coins, 'coins' => $userid));   
    
    $statement = $pdo->prepare("UPDATE users SET coins = coins + $coins WHERE id = :userid");
    $statement->execute(array('coins' => $coins));
        
        echo '"Offername: " '. $offername .', "Offerid: " '. $offerid .', "Coins: " ' . $coins . '';
    }


    Vielleicht könnt ihr mir weiterhelfen.



    Beitrag zuletzt geändert: 21.9.2018 16:36:59 von nusus
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. hallo nusus
    Mit einem normalen Wert funktioniert es z.b coins = coins +1. Aber es funktioniert nicht wenn ich die eins durch eine Variable ersetzte.

    Eine Variable kann in PHP vieles repräsentieren. Eine Addition wird immer scheitern, weil PHP nicht unterscheiden kann ob es sich bei einer Variablen um einen Zahlenwert, oder einen String, oder ein Array handelt.
    Die PHP-Funktionen is_numeric und/oder intval werden dein Problem lösen.
    http://php.net/manual/de/function.is-numeric.php
  4. Ich kann hier grade nix testen, weil mobil unterwegs, aber was auffällt: Du packst PHP- und PDO-Parameter ($coins statt :coins) zusammen und hast nicht alle PDO-Parameter belegt (:userid).
    Ich mache sowas zwar fast nie, aber ich rotze dir mal kurz mobil den Code hin. :D
    $statement = $pdo->prepare("UPDATE users SET (coins = coins + :coins) WHERE id = :userid");
    $statement->bindValue(':coins', $coins, PDO::PARAM_INT);
    $statement->bindValue(':userid', $userid, PDO::PARAM_INT);
    $statement->execute();


    Tipp: Dreh das error_reporting hoch oder lass PDO direkt Exceptions ausgeben. Das kriegst du dann auf jeden Fall mit.
    timebandit schrieb:
    Eine Addition wird immer scheitern, weil PHP nicht unterscheiden kann ob es sich bei einer Variablen um einen Zahlenwert, oder einen String, oder ein Array handelt.

    Das ist Blödsinn. PHP versucht bei einer Addition z.B. einen String in einen Integer zu konvertieren. Ein
    var_dump(1 + "1");
    (Also Integer und String) wird dir also auch einen Integer 2 zurück geben.



    Beitrag zuletzt geändert: 23.9.2018 15:29:02 von muellerlukas
  5. Autor dieses Themas

    nusus

    nusus hat kostenlosen Webspace.

    Erstmal vielen dank das du dir die mühe gemacht hast und mir direkt ein code geschrieben hast.
    Aber der int wert wird komischer weise trotzdem nicht weitergeleitet an die Datenbank.
    Es müsste eigentlich alles funktionieren...


  6. Hast du denn mal das error_reporting hochgedreht oder die Exceptions angestellt?
  7. Autor dieses Themas

    nusus

    nusus hat kostenlosen Webspace.

    Habe ich gemacht, keine fehler.

    Beitrag zuletzt geändert: 23.9.2018 17:22:49 von nusus
  8. 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!