php - 提取显示错误
问题描述
运行下面的代码段后,我在所有行中的符号中都得到相同的数字,但其他列不同。我希望它们都不同
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>';
}
}
编辑:在 $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;
解决方案
欢迎来到 sql injections 2018 请使用准备好的语句,不要将用户值直接解析到您的查询中
无论如何,您的子查询正在被缓存...您应该在 php 中执行 rand(),因为该子查询不允许使用 SQL_NO_CACHE
推荐阅读
- android - 一旦我开始做广告,我的 android BLE 设备会在多长时间内做广告?有没有办法增加持续时间?
- regex - 如何在netlify-cms Gatsby starter中的`yaml`文件中按范围限制字符数
- java - 如何使用 Java 从 script.google.com 网页获取信息?
- google-sheets - Google表格 - 从另一个范围中过滤掉一个范围内的值
- jenkins-pipeline - 如何通过读取属性文件声明步骤jenkinsfile以注入环境变量
- php - 为什么我的登录仅在这些特定情况下有效?
- ios - SwiftUI | 使用 LazyVGrid 拖放?
- python - Matplotlib:当没有实际标签时如何隐藏/删除颜色条的刻度?
- json - 如何将对象数组保存到 DTO 类中
- exe - Shiboken2 ... ImportError:DLL加载失败:找不到指定的程序