PHP object in int umwandeln

TheJoniii

Grünschnabel
Hallo,

Ich habe das Problem das Wenn ich ein Object mit
Code:
$int = (int) $Object
in einen int umwandle der value dan 0 ist obwohl ich wenn ich einen var_dump mache den value sehen kann.

Hier ist noch mein Ganzer Code:
Code:
<?php

session_start();

$requestPayload = file_get_contents("php://input");


$int = (int) $requestPayload;


var_dump($int);


 if(isset($_POST['update']))
 {

     require_once 'includes\dbh.inc.php';

     $query = "UPDATE users SET usersGeld='".$int."' WHERE usersName LIKE '{$_SESSION["usersName"]}'";
    
     $result = mysqli_query($conn, $query );


     if($result)
     {   
         echo $int;
         echo 'Data Updated';
     }else{
         echo 'Data Not Updated';
     }
     mysqli_close($conn);
}

Das Object ist
Code:
$requestPayload

Wo liegt mein Fehler?
Schonmahl danke im voraus
 

Yaslaw

alter Rempler
Moderator
kannst du uns bitte die genaue Ausgabe von var_dump() zeigen?
Am besten von var_dump($requestPayload)
 

Yaslaw

alter Rempler
Moderator
Also, dann funktioniert es ja. Diene Variabel ist ein Integer. Es ist int(123) und nicht 0 wie du schreibst.
Das Problem muss woanders liegen. Wo hat den $int den Wert 0?

Ps. bitte immer mit angeben wo im Code und auf welche Variable du den var_dump() machst.
 

TheJoniii

Grünschnabel
Also, dann funktioniert es ja. Diene Variabel ist ein Integer. Es ist int(123) und nicht 0 wie du schreibst.
Das Problem muss woanders liegen. Wo hat den $int den Wert 0?

Ps. bitte immer mit angeben wo im Code und auf welche Variable du den var_dump() machst.
Ja die Variable ist ein Integer dass funktioniert aber wen ich z.b einen echo von dem int mache kommt 0 raus. Oder auch wen ich ein Update in der Datenbank mache. (auch 0) das verstehe ich nicht.
 

Yaslaw

alter Rempler
Moderator
Der echo glaube ich nicht. So wie er in deinem Code-Schnipsel steht muss er 123 ausgeben. Ausser der Code, den ich sehe ist veraltet - dann kann schon ein weiterer Fehler drin sein.

Und gib doch mal $query aus.

Ps.
Falls usersGeld in der DB als Zahl definiert ist, dann solltest du das im SQL auch als Zahl übergeben. Also ohne die '

PPs.
Die User-id wird 1 zu 1 verglichen. Also kein LIKE sondern ein =

PHP:
$query = "UPDATE users SET usersGeld={$int} WHERE usersName = '{$_SESSION["usersName"]}'";
 

TheJoniii

Grünschnabel
Der echo glaube ich nicht. So wie er in deinem Code-Schnipsel steht muss er 123 ausgeben. Ausser der Code, den ich sehe ist veraltet - dann kann schon ein weiterer Fehler drin sein.

Und gib doch mal $query aus.

Ps.
Falls usersGeld in der DB als Zahl definiert ist, dann solltest du das im SQL auch als Zahl übergeben. Also ohne die '

PPs.
Die User-id wird 1 zu 1 verglichen. Also kein LIKE sondern ein =

PHP:
$query = "UPDATE users SET usersGeld={$int} WHERE usersName = '{$_SESSION["usersName"]}'";
Der Code ist nicht veraltet. Ich habe nur $query angepasst so wie du es mir gesagt hast.
Wen ich $query mit einem echo ausgebe kommt raus:
UPDATE users SET usersGeld=0 WHERE usersName='joni'
joni ist der Name der in der Session gespeichert ist.

Wen ich zum Test eine variable mache mit einem wert z.b 100 und diese dan bei usersGeld anstatt $int einfüge funktioniert das ohne Probleme.
 

Yaslaw

alter Rempler
Moderator
Verstehe ich das richtig?
PHP:
//Hier ist $int noch 123. Das ist der Vardump der int(123) ausgibt
var_dump($int);
 if(isset($_POST['update']))
 {
     require_once 'includes\dbh.inc.php';
     //und hier ist es dann 0
     $query = "UPDATE users SET usersGeld={$int} WHERE usersName = '{$_SESSION["usersName"]}'";
Überschreibst du in includes\dbh.inc.php die Variable $int?