Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP查询获取结果之间的日期_Php_Sqlite_Pdo - Fatal编程技术网

如何使用PHP查询获取结果之间的日期

如何使用PHP查询获取结果之间的日期,php,sqlite,pdo,Php,Sqlite,Pdo,我试图根据用户输入的月份、年份和表名从数据库中获取一些数据 从月份和年份开始,我计算起始日期和截止日期 但若我将日期放在$from_date和$todate之间,则查询不起作用 $tableName = $_REQUEST['tableName']; $month = $_REQUEST['monthName']; $year = $_REQUEST['yearName']; // echo json_encode($tableName); $tableName = json_encode($t

我试图根据用户输入的月份、年份和表名从数据库中获取一些数据

从月份和年份开始,我计算起始日期和截止日期 但若我将日期放在$from_date和$todate之间,则查询不起作用

$tableName = $_REQUEST['tableName'];
$month = $_REQUEST['monthName'];
$year = $_REQUEST['yearName'];
// echo json_encode($tableName);
$tableName = json_encode($tableName);
//echo $tableName;

$from_date = date('Y-m-d',strtotime($year."-".$month."-01"));
//echo json_encode($from_date);
//$to_date = date('Y-m-d',strtotime($year."-".$month."-01"));
$to_date = date('Y-m-t', strtotime($from_date));
//echo json_encode($to_date);

$conn = new PDO("sqlite:../../assets/rule_data.db");
    $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        //$sqlQuery = "select * from $tableName WHERE date >= '".$from_date."' AND date <= '".$to_date."' ";
        //$sqlQuery = "SELECT * FROM $tableName WHERE v_cr_sysdate >= '".$from_date."'  AND  v_cr_sysdate <= '".$to_date."' ";
        //$sqlQuery = "SELECT * FROM $tableName";
        //$sqlQuery = "select * from $tableName WHERE date >= '".convert('$from_date','%d-%m-%y')."' AND date <= '".date($to_date)."' ";
        $sqlQuery = "select * from $tableName WHERE date between '". date('Y-m-d', strtotime($from_date))."' ";
        $sqlQuery .= " AND date <='". date('Y-m-d', strtotime($to_date))."' ";
        $query = $conn->query($sqlQuery);       
        echo json_encode($query);
        echo json_encode(["riskModules"=>$query->fetchAll(PDO::FETCH_ASSOC)]);
$tableName=$\u请求['tableName'];
$month=$_请求['monthName'];
$year=$_请求['earName'];
//echo json_编码($tableName);
$tableName=json_encode($tableName);
//echo$tableName;
$from_date=日期('Y-m-d',标准时间($year.-“$MOUNT.-01”);
//echo json_encode($from_date);
//$to_date=日期('Y-m-d',标准时间($year.-“$month.-01”);
$to_date=日期('Y-m-t',strottime($from_date));
//echo json_encode($to_date);
$conn=newpdo(“sqlite:../../assets/rule_data.db”);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
//$sqlQuery=“select*from$tableName WHERE date>=””、“$from_date.”和“$from_date.”以及v_cr_sysdate=”。转换(“$from_date”、“%d-%m-%y”)和日期
您可以使用BETWEEN子句替换“大于”的组合
“相等”和“小于相等”条件

更改

(或),类似于

$sqlQuery = "select * from $tableName WHERE date >= '". date('Y-m-d', strtotime($from_date))."' ";
$sqlQuery .= " AND date <= '". date('Y-m-d', strtotime($to_date))."' ";
快速链接


语法是“第一个日期”和“第二个日期”之间的
date
,而不是“第一个日期”和日期^Correct之间的
date。BETWEEN子句的语法是错误的。您将其与可选的
date>=“first date”和“date$sqlQuery=”select*from$tableName,其中date介于“$from\u date”和“$to\u date”之间"; $query=$conn->query($sqlQuery);echo json_encode($query);echo json_encode([“riskModules”=>$query->fetchAll(PDO::FETCH_ASSOC)];我更改了查询,但根据echo语句,我可以看到查询正在形成,但没有执行{“queryString”:“select*from\“risk\u data\u bcsd\”,其中日期介于“2016-04-01”和“2016-04-30”之间。}{“riskModules”:[]}我做了很多尝试,但都不起作用。.您尝试了我的答案@Sanvi?我改为$sqlQuery=“select*from$tableName,其中日期介于“$from_date”和“$to_date”之间;但这也不起作用。我尝试了许多方法,如=并将其转换为日期函数等。我得到的输出为{“queryString”:“select*from\“risk_data_bcsd\”,其中日期介于“2016-04-01”和“2016-04-30”之间}{“risk MODULES”:[]}查询正在形成,但没有在DB中执行为什么?请参阅我的编辑1节@SanviI必须将仰泳设置为仅日期字符串或$from_date和to_date也设置为$from_date?放置后,查询输出如下,没有结果{“queryString”:“select*from\“risk_data_bcsd\”其中
日期
介于“2016-04-01”和“2016-04-30”之间}{”风险模块“:[]}
$sqlQuery = "select * from $tableName WHERE date >= '". date('Y-m-d', strtotime($from_date))."' ";
$sqlQuery .= " AND date <= '". date('Y-m-d', strtotime($to_date))."' ";
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;