我的问题如下,我试图向必须在一月份或任何一个月取消的人展示一张表格,我按以下方式进行操作:
首先,我通过 GET 传入初始数据的链接
<a href="calendario.php?dato=<?php echo date('01-m-Y');; ?>">
我在这里收到该数据并执行我的查询:
<?php
if(isset($_GET['dato'])){
$dato2 = date('t-m-Y');
$fecha = $_GET['dato'];
$query = "SELECT * FROM students INNER JOIN inscritos ON
inscritos.id_student = students.id_students
INNER JOIN pagos_estudiantes ON pagos_estudiantes.id_inscripcion =
inscritos.id WHERE pagos_estudiantes.fecha_a_pagar BETWEEN '$fecha' AND
'$dato2'";
$sql = $mysqli->query($query);
while($row = $sql->fetch_assoc()){ ?>
<tbody>
<tr>
<td><?php echo $row['names'] ?></td>
<td><b><?php echo $row['monto'] ?></td>
<td><?php echo $row['fecha_a_pagar'] ?></td>
</tr>
</tbody>
<?php } ?>
<?php } ?>
我从中得到的结果不是我想要的,它显示了我所有的记录,即所有在系统中注册的人。我只想显示付款日期在 01-01-2018 和 01-31-2018 之间的人。预先感谢您的帮助。
由于您使用
BETWEEN
了错误的字段(这是一种耻辱,可能会花费您一大笔费用),MySQL 文档说明如下:也就是说,您必须将字符串转换为日期才能进行比较。如果该列是类型
DATETIME
,则无需进行此转换。试试这样的查询:
如果在您的列中
fecha_a_pagar
您有以格式存储的日期,DD-MM-YYYY
我们将面临一派胡言,因为 MySQL 将日期存储在YYYY-MM-DD
. 然后您必须重新格式化所有内容以进行适当的比较:注意:正如@AlvaroMontoro 已经在评论中指出的那样,您的查询容易受到 SQL 注入的攻击。