显示提取时出错

Upon running the snippet below, I get same number in symbol in all rows but other columns are different. I want all of them different

if($_POST['filter']>0 && $total<=totalRows($_POST['criteria'],$conn) && $total!=0)
                    {
                        $sql1="SELECT * FROM data AS d JOIN (SELECT ROUND(RAND() * (SELECT MAX(symbol) FROM data)) AS symbol ) AS x WHERE d.symbol >= x.symbol AND d.division = '".$_POST['criteria']."' LIMIT ".$total;
                        echo '<div style="width:725px; border: thin; padding-left: 7px;">
                        Total Column of '.getDivision($_POST['criteria']).':'.totalRows($_POST['criteria'],$conn).'
                            <div style="float: right; width: 300px;">
                                Selection<br>
                                Division: '.getDivision($_POST['criteria']).'<br>
                            </div><br>
                        Entered value: '.$_POST['filter'].' '.$_POST['type'].'<br>
                        In Number: '.$total.'<br><br>
                        SQL Syntax:<br><div style="padding-left:5px;">'.$sql1.'</div></div><br><br>';
                        $result1 = mysqli_query($conn, $sql1);
                        if (mysqli_num_rows($result1) > 0) {
                            while($val1 = mysqli_fetch_assoc($result1)) 
                            {
                                echo'<tr class="row100">
                                    <td class="column100 column1" data-column="column1">'.$val1['symbol'].'</td>
                                    <td class="column100 column2" data-column="column2">'.$val1['name'].'</td>
                                    <td class="column100 column3" data-column="column3">'.$val1['percent'].'</td>
                                    <td class="column100 column4" data-column="column4">'.getDivision($val1['division']).'</td>
                                </tr>';
                            }
                        }

Edit: Use the following in $sql and desired output was obtained

$sql1="SELECT * FROM data AS d JOIN (SELECT ROUND(RAND() * (SELECT 
MAX(symbol) FROM data)) AS id ) AS x WHERE d.symbol >= x.id AND d.division = 
'".$_POST['criteria']."' LIMIT ".$total;

More Description Here

welcome to sql injections 2018 please use prepared statements and dont parse directly user values into your query

anyway your subquery is being cached... you should do your rand() in php since SQL_NO_CACHE isnt allowed for that subquery