Ошибка в отображении выборки - PullRequest
0 голосов
/ 06 июля 2018

После запуска приведенного ниже фрагмента я получаю одинаковое число в символах во всех строках, но другие столбцы отличаются. Я хочу, чтобы все они отличались

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: Используйте следующее в $ sql и желаемый результат был получен

$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

1 Ответ

0 голосов
/ 06 июля 2018

добро пожаловать в sql инъекции 2018 пожалуйста, используйте подготовленные операторы и не анализируйте непосредственно пользовательские значения в вашем запросе

в любом случае ваш подзапрос кэшируется ... вы должны выполнить rand () в php, поскольку SQL_NO_CACHE не разрешен для этого подзапроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...