PHP, MSQL Update + variable
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
addition
array
datenbank
dreh
eins
funktion
funktionieren
gefunden code
internet
konvertieren
parameter
scheitern
set
statement
string
testen
tip
unterscheiden
update
zahlenwert
-
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.
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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
(Also Integer und String) wird dir also auch einen Integer 2 zurück geben.var_dump(1 + "1");
Beitrag zuletzt geändert: 23.9.2018 15:29:02 von muellerlukas -
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...
-
Hast du denn mal das error_reporting hochgedreht oder die Exceptions angestellt?
-
Habe ich gemacht, keine fehler.
Beitrag zuletzt geändert: 23.9.2018 17:22:49 von nusus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage