【问题标题】:Select Data based on date from database根据数据库中的日期选择数据
【发布时间】:2015-08-21 21:41:42
【问题描述】:

我下面的 PHP 正在从数据库中获取当前数据的数据,如果存在于 Sql 表中,则使用时区日期和 id 来选择当前日期的日期。

但是;

如果今天是星期天,我希望它选择当前周数据,如果表中存在针对该 id 的数据,它应该从星期一到今天获取数据

我的数据库表如下

        Date                Id                Data to be fetched

2014-08-29 00:00:00       12345                       ABC
2014-08-29 00:00:00       12345                       ABC
2014-08-30 00:00:00       12345                       ABC
2014-08-31 00:00:00       12345                       ABC
2014-08-31 00:00:00       12345                       ABC
2014-08-02 00:00:00       12345                       ABC
2014-08-02 00:00:00       12345                       ABC
2014-08-02 00:00:00       12345                       ABC
2014-08-03 00:00:00       12345                       ABC
2014-08-03 00:00:00       12345                       ABC
2014-08-04 00:00:00       12345                       ABC
2014-08-04 00:00:00       12345                       ABC

PHP:代码

<?php

  // This is used to select Time Zone
date_default_timezone_set("Indian/Chagos");
        $date= date("y-m-d 00:00:00");

        //Databse Connection
                $mysqli=mysqli_connect('localhost','root','password','db');
    //Data From Ajax For Id to select data against that id

            $id= $_POST['storedValue'];
                //Sql Query
                                                                //Select data against date and PK Id
        $query ="SELECT * FROM master WHERE  StudentRegID='$id' And AttendanceDate='$date' ";
$result = mysqli_query($mysqli,$query)or die(mysqli_error());
$num_row = mysqli_num_rows($result);
            while($row=mysqli_fetch_array($result))
    {
            //Echo result
      echo "{ y: ".$row[9]." ,label: '".$row[6]."'},";  
    }
    mysqli_close($mysqli);

?>

它不工作:

你能确定我哪里出错了吗?

    $id= $_POST['storedValue'];
        $query ="SELECT * FROM master WHERE  StudentRegID='$id' AND DATEDIFF(NOW(), Date) < 7 ";
$result = mysqli_query($mysqli,$query)or die(mysqli_error());
$num_row = mysqli_num_rows($result);
            while($row=mysqli_fetch_array($result))
    {



      echo "{ y: ".$row[9]." ,label: '".$row[6]."'},";




    }

【问题讨论】:

  • @Strawberry 对不起,我不能理解你

标签: php mysql


【解决方案1】:

您可以在Date 列和您的当前日期之间使用DATEDIFF,并仅检索差异小于 7 的行,例如:

SELECT * [...]
WHERE  StudentRegID='$id' AND DATEDIFF(NOW(), Date) < 7
-- if you want only the lines where something happened today :
AND DATE(AttendanceDate) = DATE('$date') 
;

【讨论】:

  • 如果您更新 WHERE 条件,则不会。我在 StudentRegId 上添加了一条规则。这样,它将返回与过去 7 天的特定学生 ID 匹配的行。
  • 如果你不介意的话,你能排练一下我的问题吗
  • 警告:mysqli_error() 只需要 1 个参数,0 在第 14 行的 C:\Apache24\htdocs\working-DONOT-TOUCH\graph.php 中给出它显示上述错误
  • 我已经更新了上面的更改代码它不起作用你能告诉我我哪里出错了
  • 在第一个答案中,您使用master,在第二个中使用attendance_master。请更正缩进。也可以直接用SQL测试查询,看看返回结果是否正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
相关资源
最近更新 更多