【问题标题】:Session Variable Not Returning会话变量未返回
【发布时间】:2015-02-13 17:34:39
【问题描述】:

我有这个 PHP 代码,它使用 PHP 会话创建的一些变量将一些查询值写入 Excel 电子表格。

<?php
session_start();

error_reporting(0);
require_once("config.php");

require_once('new_stuff/php-excel/Classes/PHPExcel.php');

$link = mysql_connect($dbserver,$dbuser,$dbpass)
    or die('Could not connect: ' . mysql_error());

$sdate = $_SESSION['startdate'];
$edate = $_SESSION['enddate'];

//$sdate = $_POST['startdate'];
list($smonth, $sday, $syear) = split('[/.-]', $sdate);

//$edate = $_POST['enddate'];
list($emonth, $eday, $eyear) = split('[/.-]', $edate);


mysql_select_db($dbname) or die('Could not select database');

// Performing SQL query
$query = 
    'SELECT 
        mantis_category_table.name, 
        mantis_bug_history_table.bug_id, 
        FROM_UNIXTIME(mantis_bug_table.date_submitted, "%m-%d-%Y") AS DATE2, 
        FROM_UNIXTIME(min(mantis_bug_history_table.date_modified), "%m-%d-%Y") AS FirstOfdate_modified,
        ROUND((min(mantis_bug_history_table.date_modified)- mantis_bug_table.date_submitted)/ 86400, 1) as day_difference
    FROM (mantis_bug_table INNER JOIN mantis_bug_history_table 
    ON 
        mantis_bug_table.id = mantis_bug_history_table.bug_id) 
    INNER JOIN 
        mantis_category_table ON mantis_bug_table.category_id = mantis_category_table.id 
    WHERE
        FROM_UNIXTIME(mantis_bug_table.date_submitted, "%Y-%m-%d")
            BETWEEN DATE("'.$syear.'-'.$smonth.'-'.$sday.'") AND DATE("'.$eyear.'-'.$emonth.'-'.$eday.'")
    GROUP BY 
        mantis_category_table.name, mantis_bug_table.category_id, mantis_bug_table.date_submitted, mantis_bug_table.status, mantis_bug_history_table.bug_id, mantis_bug_history_table.field_name, mantis_bug_history_table.new_value 
    HAVING 
        (((mantis_bug_table.status)<>90) AND ((mantis_bug_history_table.field_name)="status") AND ((mantis_bug_history_table.new_value)="50")) 
    ORDER BY 
        mantis_category_table.name, FROM_UNIXTIME(mantis_bug_table.date_submitted, "%m")';

echo $query;

$result = mysql_query($query) or die('Query failed: ' . mysql_error());

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);

当我回显查询时,我看到 startdate 没有被传递到页面,即使它的写法与 enddate 完全相同,它正在显示。

有人能指出我的会话变量收集技术中的缺陷吗?

【问题讨论】:

  • 你是否在会话中设置了开始日期
  • @OliSoproniB - 我以为我在第 12 行?
  • $sdate = $_SESSION['startdate'];如果 $_SESSION['startdate'] 为空,则没有任何意义,它也会将 $sdate 显示为空。在 $_SESSION['startdate'] 中设置值的代码在哪里

标签: php mysql session


【解决方案1】:
session_start();

$_SESSION['startdate'] = date('Y-m-d');

$_SESSION['enddate'] = date('Y-m-d');


$sdate = $_SESSION['startdate'];

$edate = $_SESSION['enddate'];

$sday = date('d', strtotime($sdate));

$smonth = date('m', strtotime($sdate));

$syear = date('Y', strtotime($sdate));



$eday = date('d', strtotime($edate));

$emonth = date('m', strtotime($edate));

$eyear = date('Y', strtotime($edate));



$query = 
    'SELECT 
        mantis_category_table.name, 
        mantis_bug_history_table.bug_id, 
        FROM_UNIXTIME(mantis_bug_table.date_submitted, "%m-%d-%Y") AS DATE2, 
        FROM_UNIXTIME(min(mantis_bug_history_table.date_modified), "%m-%d-%Y") AS FirstOfdate_modified,
        ROUND((min(mantis_bug_history_table.date_modified)- mantis_bug_table.date_submitted)/ 86400, 1) as day_difference
    FROM (mantis_bug_table INNER JOIN mantis_bug_history_table 
    ON 
        mantis_bug_table.id = mantis_bug_history_table.bug_id) 
    INNER JOIN 
        mantis_category_table ON mantis_bug_table.category_id = mantis_category_table.id 
    WHERE
        FROM_UNIXTIME(mantis_bug_table.date_submitted, "%Y-%m-%d")
            BETWEEN DATE("'.$syear.'-'.$smonth.'-'.$sday.'") AND DATE("'.$eyear.'-'.$emonth.'-'.$eday.'")
    GROUP BY 
        mantis_category_table.name, mantis_bug_table.category_id, mantis_bug_table.date_submitted, mantis_bug_table.status, mantis_bug_history_table.bug_id, mantis_bug_history_table.field_name, mantis_bug_history_table.new_value 
    HAVING 
        (((mantis_bug_table.status)<>90) AND ((mantis_bug_history_table.field_name)="status") AND ((mantis_bug_history_table.new_value)="50")) 
    ORDER BY 
        mantis_category_table.name, FROM_UNIXTIME(mantis_bug_table.date_submitted, "%m")';

echo $query;

【讨论】:

  • 当我print_r 它时,它就会出现。我不确定为什么它没有出现在查询中...
  • 试一试,您需要正确设置结束日期,以便它们与开始日期的值不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-24
  • 2013-09-18
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 2014-02-07
  • 2012-04-10
相关资源
最近更新 更多