变量和函数

时间:2015-12-29 07:29:03

标签: php mysql sql

我试图将第一个函数中使用的变量$drop_var1添加到我需要在 SQL 查询中使用的第二个函数中。每当我尝试传递全局变量或任何其他方法时,它返回黑色或不返回数据......我真的迷失了如何使其工作

//**************************************
//     First selection results     //
//**************************************

if($_GET['func'] == "drop_1" && isset($_GET['func'])) { 
   $return_value = drop_1($_GET['drop_var']); 
}

function drop_1($drop_var1)
{ 
 $TD_DB_RESOURCE = open_teradata_resource();

$result2 = "SELECT DISTINCT a.call_id as id, b.call_name as name FROM call_log as a, call as b WHERE cust_id in ($drop_var1) and src_row_cre_dt between '2015-12-26' and '2015-12-26' and a.call_id = b.call_id";
echo $result2."<br>";
$arr_results = odbc_exec($TD_DB_RESOURCE, $result2);

    echo '<select name="drop_2" id="drop_2">
          <option value=" " disabled="disabled" selected="selected">Choose API</option>';

          while ($drop_2 = odbc_fetch_array($arr_results) )  
            {
            echo '<option value="'.$drop_2['id'].'">'.$drop_2['name'].'</option>';
            }   
    echo '</select><br><br>';

    echo "<script type=\"text/javascript\">
$('#wait_2').hide();
    $('#drop_2').change(function(){
      $('#wait_2').show();
      $('#result_2').hide();
      $.get(\"func.php\", {
        func: \"drop_2\",
        drop_var: $('#drop_2').val()
      }, function(response){
        $('#result_2').fadeOut();
        setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400);
      });
        return false;
    });
</script>";
}

//**************************************
//     Second selection results     //
//**************************************

if($_GET['func'] == "drop_2" && isset($_GET['func'])) { 
   $return_value = drop_2($_GET['drop_var']); 
}

function drop_2($drop_var2)
{ 
  $TD_DB_RESOURCE = open_teradata_resource();

$result3 = "SELECT DISTINCT rc FROM call_log WHERE call_id in ('$drop_var2') and src_row_cre_dt between '2015-12-26' and '2015-12-26' and cust_id in ($drop_var1)";
echo $result3."<br>";   
$arr_results = odbc_exec($TD_DB_RESOURCE, $result3);

    echo '<select name="drop_3" id="drop_3">
          <option value=" " disabled="disabled" selected="selected">Choose API Error Code</option>';

          while ($drop_3 = odbc_fetch_array($arr_results) )  
            {
            echo '<option value="'.$drop_3['rc'].'">'.$drop_3['rc'].'</option>';
            }   
    echo '</select><br><br>';

    echo "<script type=\"text/javascript\">
$('#wait_3').hide();
    $('#drop_3').change(function(){
      $('#wait_3').show();
      $('#result_3').hide();
      $.get(\"func.php\", {
        func: \"drop_3\",
        drop_var: $('#drop_3').val()
      }, function(response){
        $('#result_3').fadeOut();
        setTimeout(\"finishAjax_tier_four('result_3', '\"+escape(response)+\"')\", 400);
      });
        return false;
    });
</script>";
}

这是查询的样子

SELECT DISTINCT a.call_id as id, b.call_name as name FROM call_log as a, call as b WHERE cust_id in ('123456789') and src_row_cre_dt between '2015-12-26' and '2015-12-26' and a.call_id = b.call_id

SELECT DISTINCT rc FROM call_log WHERE call_id in ('29') and src_row_cre_dt between '2015-12-26' and '2015-12-26' and cust_id in ()

2 个答案:

答案 0 :(得分:1)

这是因为在调用下面的函数时,变量名为$ drop_var2,但在构造查询时使用$ drop_var1

function drop_2($drop_var2)
{ 
  $TD_DB_RESOURCE = open_teradata_resource();

$result3 = "SELECT DISTINCT rc FROM call_log WHERE call_id in ('$drop_var2') and src_row_cre_dt between '2015-12-26' and '2015-12-26' and cust_id in ($drop_var1)";

答案 1 :(得分:0)

这是一个非常基本的问题,请再考虑阅读PHP手册。我立即想到了三种方式:

  1. 将其作为参数传递:function drop_2($drop_var2, $another_variable)
  2. 将两个函数放在一个类中,并使变量类变量:$this->var1
  3. 使变量成为全局变量(但不好的做法)。
  4. 此外,将代码与html输出混合从不是一个好主意,请考虑使用mvc框架(laravelcodeiginiterSlim)。