• 技术文章 >后端开发 >php教程

    为啥不能调用函数里面的变量

    2016-06-13 12:39:58原创279
    为什么不能调用函数里面的变量?
    
    
    //定义常量
    define("EntTime", "2012-08-01");
    define("EntTime2", "2012-08-31");
    define("Query_field", "品号");
    define("Operate", "包含");
    define("requirement", "WDZ");

    //将常量转换为变量
    $EntTime = EntTime;
    $EntTime2 = EntTime2;
    $Query_field = Query_field;
    $Operate = Operate;
    $requirement = requirement;

    //自定义函数
    function jhRepPd(){
    GLOBAL $PUR,$MOC;
    switch($Operate){
    case "包含":
    if($Query_field=="品号"){
    $PUR = "PURTH.TH004 like'%".$requirement."%' AND ";
    }
    break;
    }
    }

    //去除日期中的"-"
    $a_date = "PURTG.TG003 >='".str_replace("-","",$EntTime)."'";
    $b_date = "PURTG.TG003 <='".str_replace("-","",$EntTime2)."'";

    //判断变量是否为空
    if(!empty($EntTime) && !empty($EntTime2) && $requirement!==""){
    $date = "(".$a_date." AND ".$b_date.") AND ";
    jhRepPd();
    };

    //sql语句
    $sql = "SELECT * FROM TB where {$date}{$PUR}dbId in('1','2','3')";

    //打印SQL语句
    echo $sql;

    ?>
    --这是打印结果,但不是正确的。因为函数中的变量没有输出,为什么?
    SELECT * FROM TB where (PURTG.TG003 >='20120801' AND PURTG.TG003 <='20120831') AND dbId in('1','2','3')

    --正确的结果应该是:
    SELECT * FROM TB where (PURTG.TG003 >='20120801' AND PURTG.TG003 <='20120831') AND PURTH.TH004 like'%WDZ%' AND dbId in('1','2','3')

    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 20+值得了解的PHP面试题(附答案分析)• 庆祝新版第二贴解决方法 • 找到一个编辑器,但是不知道来得到里面的值!求解解决方案 • 问大家一个gbk和gb2312的有关问题 • webservice有关问题,soap有关问题,响应有关问题-求大神!大神在哪
    1/1

    PHP中文网