Php值在mysql查询后被截断

Php值在mysql查询后被截断,php,mysql,Php,Mysql,我在下面编写了计算加权平均值的代码。该算法是正确的,但我的问题是,当值$row['grade']为eg:9.5时,它会被截断为9,当值10时,它会被截断为1。从一些测试中,我认为在将值插入数组时会出现问题。我已经尝试了我所知道的一切,但我无法让它发挥作用。有什么想法吗?下面是代码: <?php require 'database_connect.php'; $username=$_SESSION["username"]; $sql="SELECT dm,grade from

我在下面编写了计算加权平均值的代码。该算法是正确的,但我的问题是,当值$row['grade']为eg:9.5时,它会被截断为9,当值10时,它会被截断为1。从一些测试中,我认为在将值插入数组时会出现问题。我已经尝试了我所知道的一切,但我无法让它发挥作用。有什么想法吗?下面是代码:

<?php 


require 'database_connect.php';
$username=$_SESSION["username"];    
$sql="SELECT dm,grade from subject,attends where username='$username' AND grade>='5' and subject_code=code";
$result = mysqli_query($conn,$sql);
$i=-1;
while($row = mysqli_fetch_array($result)){
    $i=$i+1;
    $grade[$i]=$row['grade'];
    if($row['dm']<=2){
        $weight[$i]=1.0;
    }elseif($row['dm']<=4){
        $weight[$i]=1.5;
    }else{
        $weight[$i]=2.0;
    }

}
if($i>=0){
    $total=array_sum($weight);

    $part=0;
    for($j=0;$j<=$i;$j++){
        echo $grade[$j].",";
        echo $weight[$j]."|||"; 
        $part=$part+$grade[$j]*$weight[$j];

    }
    $full=$part/$total;

    // echo round($full, 2);


}else{
    echo "0";
}




                      $conn->close();

?>

Put
$grade=array()$权重=数组()在while循环之前

编辑:在首次使用之前初始化数组总是一个好主意,因为如果
$grade
碰巧是字符串,
$grade[0]
引用将表示字符串的第一个字符,而不是数组的第一个元素


对于PHP5.4及更新版本,您还可以编写
$grade=[]$重量=[]

发布您的数据库模式
和subject\u code=code
这应该代表伪代码吗?如果没有,它在这里就失败了。旁注:因为您刚刚开始使用数据库查询编写代码。请尽早了解。
var\u dump($row['grade'])
has
9.5
?subject\u code是表attends中的外键,它在代码值中引用表主题