2015-05-19 70 views
0

我有一个小问题。我有一个php函数,它在页面内时可以很好地工作。这是从外部文件打印PHP函数

$selectQuery = "SELECT DISTINCT product_code FROM product;"; 
$List = mysql_query($selectQuery, $Connection) or die("ERROR".mysql_error()); 

    while($Output = mysql_fetch_array($List)) 
    { 
     echo "<option value='".$Output[0]."'>".$Output[0]."</option>"; 
    } 

但是当我把它包括的地方,我把我的功能和除从那里叫它文件时,它输出无为而无不为这低于它不输出为好。 这里是函数调用:

<select name="Selector" > 
    <option value="">--Select Product--</option> 
    <?php printProductBox("SELECT DISTINCT product_code FROM product;"); ?> 
    </select> 

这里是在函数文件,该文件也被前面的页面包含的功能:

function printProductBox($ParameterQuery){ 
    include ('DatabaseVariables.php'); 
    $List = mysql_query($ParameterQuery, $Connection) or die("ERROR".mysql_error()); 

    while($Output = mysql_fetch_array($List)){ 
     echo "<option value='".$Output[0]."'>".$Output[0]."</option>"; 
    } 
} 

数据库证书文件都在主页面包括并在函数文件中(函数文件也包含在页面中)。 该文件的其他功能正在主页面中工作。所以我想知道为什么这个功能有问题?

有没有人有任何线索?

+0

错误日志说什么?该查询的结果是什么? – tubaguy50035

+1

看起来'$ Connection'没有在'printProductBox'函数的范围内定义。 –

+0

没有错误 –

回答

0

把这个在您的函数的开始:

global $Connection; 

编辑的新建议,这可能有助于如果连接已经建立,尝试更换旧版本的这些行:

<?php printProductBox("SELECT DISTINCT product_code FROM product;", $Connection); ?> 

function printProductBox($ParameterQuery, $Connection){ 
+0

我有一个特定的文件,我插入连接的详细信息 –

+0

我应该将全局变量添加到那里的所有变量吗? –

+0

我这样调整函数function printProductBox($ ParameterQuery)include('DatabaseVariables.php'); $ List = mysql_query($ ParameterQuery,$ Connection)或者die(“ERROR”.mysql_error()); \t \t \t 而\t($输出= mysql_fetch_array($列表)){ \t \t \t回声 “<选项值= '”。$输出[0]。 “'>”。$输出[0]。“”; \t \t} \t}' –

0

问题是缺少凭证。 凭证必须包含在功能范围内。我想知道是否有办法声明全局变量。所以我不会在每个函数中包含相同的文件。

+0

如果你不把调用返回到'mysql_connect()'到一个变量,连接本身将是全局的。然后你只需要运行'mysql_query($ query)',其余的就自行处理。 [PHP/mysql_query()](http://php.net/manual/en/function.mysql-query.php)指定第二个参数是可选的。 –