【问题标题】:How to create Holiday Function in PHP?如何在 PHP 中创建假日函数?
【发布时间】:2015-02-24 04:45:20
【问题描述】:

我正在尝试创建一个函数以在 PHP 中生成假期。 我已将假期日期存储在 Oracle 表中:
假期
2015 年 1 月 1 日
2015 年 1 月 3 日
2015 年 1 月 4 日

我的问题是,如何制作一个函数来获取假期日期? 我的意思是,我需要确定 is_holiday('01-JAN-15') 假期是 TRUE。

这是我的源代码:

<?php
include "config/connect.php";
function is_holiday($thedate)
{
	$sql = OCIParse($connect, "SELECT * FROM UF2T_HOLIDAY WHERE HOLIDAY = '".$thedate."'");
	ociexecute($sql);
	$result = oci_fetch_array($sql);

	if(!empty($result[0]))
	{	
		$holiday = "TRUE";
	}
	else
	{
		$holiday = "FALSE";
	}
	return $holiday;
}
echo is_holiday("08-JAN-15");
?>

此代码不起作用并且总是返回 FALSE。 我应该怎么做才能使这段代码正常工作?

其他信息: 我尝试在函数之外运行它,如下所示:

<?php
include "config/connect.php";

    $thedate = '01-JAN-15';
    $sql = OCIParse($connect, "SELECT HOLIDAY FROM UF2T_HOLIDAY WHERE HOLIDAY = '".$thedate."'");
    ociexecute($sql);
    $result = oci_fetch_array($sql);

    if(!empty($result[0]))
    {   
        $holiday = "TRUE";
    }
    else
    {
        $holiday = "FALSE";
    }

echo $holiday;
?>

此代码有效。所以我认为问题出在功能上。有什么建议吗?请帮忙。提前致谢。 对不起,我的英语不好。 :D

【问题讨论】:

  • 我会从print_r($result);开始
  • 从 UF2T_HOLIDAY 中选择 HOLIDAY WHERE HOLIDAY in('".$thedate."')
  • 对不起,还是不行。 :(
  • HOLIDAY - DATE 或 VARCHAR2 或 ... 列的数据类型是什么?
  • 嗨,teo。数据类型是日期。有什么问题吗?

标签: php sql oracle function


【解决方案1】:

我认为,这个问题是,变量 $connect 在您的函数中不可用。试试这个:

function is_holiday($thedate, $connect)

然后调用函数:

echo is_holiday("08-JAN-15", $connect); 

【讨论】:

  • 谢谢,teo。我认为这是一个更好的解决方案。
【解决方案2】:

这是因为默认情况下 PHP 全局变量在函数中是不可见的。在您的情况下,函数内部的连接是一个局部变量,其值未定义。像这样改变你的功能:

function is_holiday($thedate)
{
    global $connect;
    $sql = OCIParse($connect, "SELECT * FROM UF2T_HOLIDAY WHERE HOLIDAY = '".$thedate."'");
    ociexecute($sql);
    ...

【讨论】:

  • 使用全局变量不好——解决方法见我的帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2018-01-02
  • 2018-01-14
相关资源
最近更新 更多