Undefined index when fetching database records

Asked

Viewed 35 times

0

I created a code that makes you select all REWARDS from the database, calculate and a result.

function updating_exp($con) {

    global $con; 

    $stmt = $con->prepare("SELECT SUM(reward_qty) AS total_earned FROM public_rewards WHERE client_id = ? AND reward_type = 'exp' LIMIT 0, 12");
    $stmt->bind_param('s', $_SESSION['u_id']);
    $stmt->execute();
    $stmt->bind_result($uid);
    $stmt->store_result();     

    $reward_exp = 15;   

    if(public_user_general_data($con) == true) {

        return false;

    } else {

        if(public_user_level_data($con, $reach_level = 2)) {

            if($stmt->num_rows > 0) {     

                while($results = $stmt->fetch()) {

                    $percentages = $results['total_earned'];         

                    //echo "<script>alert('$percentages');</script>"; 

                    $total = ($percentages / 100) * $reward_exp;
                    $receive = $reward_exp + round($total);

                    //echo "<script>alert('p $percentage -  r $reward_exp -  t $total / $receive');</script>";   
                    exp_user_data($con, $receive);                    
                }

            } else {
                exp_user_data($con, $reward_exp); 
            }  

        } else {
            exp_user_data($con, $reward_exp);
        }     
    }     
}

but he of error

 Notice: Undefined index: total_earned in D:\xampp\htdocs\Superfacil_v1.4\inc\functions.php on line 586
  • fetch() will bring only one record (the first one you find), the correct one would use fetchAll. Regarding not having found the Dice, from a var_dump in $Results and see what appears

1 answer

0

Did not set the index total_earned check that the field name in your db table is equal to 'reward_qty'.

try changing the stmt to

$stmt = $con->prepare("SELECT SUM(reward_qty) AS total_earned FROM public_rewards WHERE client_id = :uid AND reward_type = 'exp' LIMIT 0, 12");
  $stmt->bindParam('uid', $_SESSION['u_id'], PDO::PARAM_INT);
  $stmt->execute();
  $stmt->bind_result($uid);
  $stmt->store_result(); 
  • does not work, Warning: Wrong Parameter Count for mysqli_stmt::bind_param() in D: xampp htdocs Superfacil_v1.4 inc functions.php on line 565

  • Check in your database (e.g. localhost/phpmyadmin) if the table column is with the name corresponding to the index you reported in php, I believe you did not understand right the first answer.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.